我根据书Google API开发详解一模一样做了个例子但是发现有错误。书上例子一共以下几个文件geoip.inc geoipcity.inc geoipregionvars.php geoipseeker.jpg GeoLiteCity.dat index.html search.php 错误在于:index.html中的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>GeoIP 搜索者</title>
<!--导入Google Maps API库文件。注意将本代码中的API Key替换为前文申请到的API Key-->
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA1j86tnUDFv8OAtC8dZVtKRT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSzmwrQ90SNUILzGRpsBiaa860gfQ" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var map; //全局GMap2对象
var marker; //用于标识查询IP的GMarker地标
//初始化
function load()
{
if (GBrowserIsCompatible())
{
map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(39.92, 116.46), 2);
//添加相应GControl()控件
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
//设定地图类型为混合地图
map.setMapType(G_HYBRID_MAP);
//查询当前访客信息
getGeoInfo("");
}
}
//响应查询栏的回车
//因为FireFox中event不是全局的,所以必须从相应DOM对象里传回event
//如下写法可兼容IE和Firefox
function pressEnter(event, q)
{
//如果输入了回车,则执行查询
if(event.keyCode==13 || event.keyCode==10)
{
getGeoInfo(q);
}
}
//查询函数
function getGeoInfo(q)
{
GDownloadUrl("search.php?q="+q, function(data)
{
eval(data);//这行错误!!!!!!!!!!!!! });
}
//服务器端数据调用接口
function loadGeoInfo(q, ip, country_code, country_code3, country, region, city, latitude, longitude)
{
//新的信息窗口中的内容
var info = "<div align=\"left\" style=\"overflow:X; font-size:12px\">"
+ "<span style=\"font-size:14px\"><strong>" + q + "</strong></span><br />"
+ "<strong>IP:</strong> " + ip + "<br />"
+ "<strong>国家:</strong> " + country + "<br />"
+ "<strong>代码:</strong> " + country_code + "(" + country_code3 + ")" + "<br />"
+ "<strong>省份:</strong> " + city + "<br />"
+ "<strong>城市:</strong> " + region + "<br />"
+ "<strong>经度:</strong> " + longitude + "<br />"
+ "<strong>纬度:</strong> " + latitude + "<br />"
+ "</div>";
//移动地图中心到新的位置
var point = new GLatLng(latitude, longitude);
map.panTo(point);
//如果创建了marker地标,则关闭当前的信息窗口并移除地标
if(marker)
{
map.closeInfoWindow();
map.removeOverlay(marker);
}
//创建新的地标
marker = new GMarker(point);
map.addOverlay(marker);
//显示信息窗口
marker.openInfoWindowHtml(info);
}
//]]>
</script>
<style>
td{
text-align:center;
}
</style>
</head>
<body onload="load()" onunload="GUnload()">
<table cellSpacing="0" cellPadding="0" width="600" border="0" align="center">
<tbody>
<tr>
<td>
<img src="geoipseeker.jpg" title="geoipseeker" alt="geoipseeker" width="450" height="50" style="boder:0" />
<td>
</tr>
<tr>
<td height="25">
<!--此处onsubmit为"return false;"可防止表单提交,因为本例中用AJAX查询,无需提交表单-->
<form onsubmit="return false;">
<!--分别为输入框和按钮都添加了事件监听。回车和点击按钮都可以进行查询-->
<label for="q">在此输入IP或域名<input maxLength="50" size="25" name="q" id="q" onkeypress="pressEnter(event, this.value); " />
<input type="button" value="查找" id="search" onclick="getGeoInfo(q.value)" /></label>
</form>
</td>
</tr>
<tr>
<td height="20" id="info"></td>
</tr>
<tr>
<td>
<div id="map" style="width:580px;height:350px"></div>
</td>
</tr>
<tr>
<td height="20" id="link">
<a href="http://blog.gmap2.net">Power by <strong>GMap2.net</strong></a>
</td>
</tr>
</tbody>
</table>
</body>
</html>
应该所有的东西跟书上例子是一样的。。页面能正常打开 但是就不能使用这个IP定位功能,GeoLiteCity.dat路径是对的(放在同一个目录中的)
相关推荐
在本例中,我们将关注如何利用ELK栈中的Logstash和Kibana实现GeoIP定位,追踪并展示全球访客的地理位置。 首先,我们需要确保已经成功搭建了ELK环境。Logstash负责收集、解析和过滤日志数据,而Kibana则提供了一个...
IP定位是通过IP地址获取设备所在位置的技术,而"ip定位城市"则表明GeoIP2不仅限于国家级别的粗略定位,它可以细化到城市层面,甚至更具体的位置。 在提供的压缩包子文件中,"GeoLite2-City_20201222.tar.gz"是...
在2020年8月4日发布的这个版本中,我们得到了最新的GeoLite2/GeoIP全球国家IP定位离线库,格式为mmdb。 GeoLite2是GeoIP数据库的一个免费版本,特别适合那些需要进行IP定位但预算有限的个人和企业。它提供了相当...
这个脚本可能会调用`geoip.inc`中的函数,对输入的IP地址进行查询,然后返回GeoIP数据库中对应的国家编码或名称。这个功能对于网站统计、广告定向或者安全分析等场景非常有用。 `country_code_2_zhname.txt`文件则...
GeoLite2和GeoIP是MaxMind公司开发的两种全球IP地址定位数据库,它们主要用于帮助用户获取访问者IP地址的相关信息,如国家、地区、城市、经纬度等地理信息。GeoLite2是GeoIP的免费版本,尽管功能相对较弱,但仍然能...
GeoLite2和GeoIP是MaxMind公司开发的两个著名地理定位数据库,用于提供IP地址到地理位置的映射服务。这两个数据库分别提供了不同的功能,而GeoLite2-ASN_20210604文件则专门针对ASN(自治系统号)进行定位。 ASN是...
GeoLite2和GeoIP是MaxMind公司开发的两种全球IP定位数据库,用于提供网络IP地址到地理位置的映射服务。GeoLite2是GeoIP的升级版本,提供了更准确的地理位置信息,包括国家、城市、经纬度等数据。这些数据库通常以...
GeoLite2和GeoIP是两种广泛使用的IP地址到地理位置转换的数据库,主要为网络服务提供者、网站管理员以及开发者提供全球IP地址的定位服务。这些数据库包含了大量的IP地址范围及其对应的国家、地区信息,以便在没有...
- `GeoIP2`:是 GeoIP 的升级版,支持更丰富的地理信息和更高效的查询。 - `libmaxminddb`:MaxMind 提供的 C 语言接口,用于直接读取其二进制数据库格式,性能优于 GeoIP。 总结,GeoIP-1.6.12.tar.gz 是一个...
《GeoIP库详解:深入解析geoip-1.1.0.tgz》 ...通过深入学习和理解`geoip-1.1.0.tgz`中的内容,开发者不仅可以掌握GeoIP的基本用法,还能对IP定位技术有更全面的认识,从而在实际项目中发挥出更大的作用。
GeoLite2和GeoIP是MaxMind公司开发的两个著名IP地址到地理位置转换工具,它们提供了全球范围内的IP定位服务。GeoLite2是GeoIP的免费版本,主要用于商业用途和个人研究,而GeoIP则包含了更全面、更精确的数据,通常...
这对于网站分析、广告定位、内容个性化、安全防护等领域都非常有用。 标签中提到的“nginx”和“tengine”都是流行的Web服务器软件。Nginx以其高性能和稳定性而闻名,广泛用于处理高并发的HTTP请求。Tengine是由...
GeoLite2和GeoIP是MaxMind公司开发的两个著名IP定位数据库,用于提供全球范围内的IP地址到地理位置的映射。这些数据库可以帮助网络服务提供商、网站管理员和其他IT专业人士追踪和理解用户的位置信息,例如用于广告...
7. **应用场景**:PHP GeoIP扩展常用于网站统计分析、个性化内容推荐、广告定位、内容过滤等场景。 通过以上介绍,我们可以看到PHP GeoIP扩展在获取用户位置信息方面的重要性,以及如何在PHP项目中有效地使用它。...
GeoLite2和GeoIP是MaxMind公司开发的两种全球IP定位数据库,用于提供网络IP地址到地理位置的映射服务。GeoLite2是GeoIP的免费版本,为开发者和研究人员提供了便利,可以用来识别访问者的大致地理位置,如国家、地区...
如果启用缓存,`laravel-geoip` 将自动处理查询结果的缓存,提高性能。当然,你也可以自定义缓存时间或根据需要手动清除缓存。 总结一下,`laravel-geoip` 服务包为 Laravel 提供了简单易用的接口,用于获取和处理 ...
GeoIP数据库提供的任何位置不应用于识别特定地址或家庭,使用精度半径作为IP地址返回的纬度和经度坐标的地理定位精度指示,IP地址的实际位置可能在这个半径和经纬度坐标所定义的区域内。 GeoIP库可以根据IP地址(支持...
GeoLite2和GeoIP是MaxMind公司开发的两种全球IP定位数据库,用于提供网络IP地址到地理位置的映射服务。GeoLite2是GeoIP的免费版本,为用户提供了一个经济实惠的方式来获取全球IP地址的地理信息。2021.08.10更新的这...
官网下载,最新GeoLite2/ GeoIP 全球国家IP定位离线库 2020.09.08 最新版 (mmdb)
官网下载,最新GeoLite2/ GeoIP 全球国家IP定位离线库 2020.08.18 最新版 (mmdb)