如何通过来访者IP定位google地图

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何通过来访者IP定位google地图

随着国内各大品牌门户网站纷纷推出地图服务,如搜狗地图,百度地图、网易地图等,地图的应用变得越来越广泛,同时,很多网站管理员都将地图服务加入到自己的网站中,增添不少特色,当然,也给使用的人提供了很多方便。最近本人一时兴起,利用google map api实现了通过来访者的IP定位google地图,同时提供对IP、域名归属地查询服务。国内也有比较多提供地图服务的API,例如:51ditu,mapbar等,选择google map api的原因是其应用的广泛性,而且其最新版本提供了更多更好的功能,不过还处于测试阶段。有兴趣的朋友可以上网搜索一下其相关资料。下面我将如何实现IP定位功能和大家交流一下。

要想使用google map api,首先得获取Google地图API的密钥,获取网址为:/intl/zh-CN/apis/maps/signup.html,这一过程中,如果没有google帐户的话,还得注册用户。

获取到密钥之后接着下来利用它实现最简单的hello world网页,google

提供了很多示例,大家可以访问这个网址:

/intl/zh-CN/apis/maps/documentation/examples/in dex.html查看其示例,想看怎么实现,只要查看相应页面的源代码就可以了。

经过简单的一些复制,粘贴操作,马上就可以在你的网页上增加地图了,呵呵,是不是很简单呢!拥有自己的地图后我们马上实现通过IP定位google地图。实现这个功能之前,我们得先准备些IP数据,假如你没有这些数据怎么办?没关系,我们可以享受免费大餐,国外著名的maxmind公司提供免费的IP地址库和相应的JAVA实现接口程序,大家可以通过链接

/app/java进行下载,其免费数据准确率大概是70-80%,如果你想要更准确的数据,可以购买其收费数据,可以准确到90%以上,此外,我们还可以下载到国内著名的IP纯真数据库,准确率比maxmind的数据高多了,而且还是不断更新的,不过只限于国内的IP而言。

上面的都是一些准备的工作,现在是万事具备,只欠编码了,不过编码倒也是小事,按部就班就行了。

第一步,获取来访用户的IP

String ip = request.getHeader("x-forwarded-for");

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP");

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP");

}

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr();

}

第二步,根据IP,结合IP数据库获取相应的地址信息(纯真数据库)或者是经纬度信息,数据库调用都有相应的JAVA 调用API的,直接拿来用就行了。

第三步,根据获取到的经纬度或者地址信息定位地图,其实google map api 只会根据经纬度进行定位,地址也是先转换成坐标信息,再进行定位的,代码片段如下:

function setMapCenter(){

map.setCenter(gll,14);//14是代表比例尺的级别

var marker = new GMarker(gll);

map.addOverlay(marker);

var tip = ipLoc+"\n"+chunZhenCountry+"\n"+chunZhenArea;

GEvent.addListener(marker, "click", function() {

marker.openInfoWindowHtml(tip);

});

marker.openInfoWindowHtml(tip);

}

至此,通过IP实现google地图定位的功能就实现了,具体的效果,大家可以看一下DEMO

相关文档
最新文档