结合Google Maps API和GeoIP/新浪/搜狐接口的IP地理信息可视化查询
2013-07-21 18:15
555 查看
网络上有很多提供IP地址查询的网站,输入IP地址,得到IP所在地的结果。本文实现一种更具特色的查询,将IP所在地直接标注在Google Maps上。
本文主要利用Google Maps JavaScript API 和第三方网站提供的IP查询接口实现。
主要设计思路:IP地址经第三方网站查询得到地理位置———>通过Google Maps API 提供的Geocoder.geocode()方法将地理位置转化为地理坐标(经纬度)——>再将地理坐标在地图上标记。
1)使用数据库,可参考纯真IP数据库。
2)调用第三方网站的IP查询接口[1][2]。
1.新浪IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=IP地址
可通过jquery调用,下同:
2.搜狐IP地址查询接口:http://pv.sohu.com/cityjson
3.GeoIP接口:
有多个API接口提供,包括所在地的经纬度,但免费用户只能查询本机IP:
geoip_country_code(){国家代码},geoip_country_ name(){国家名称},geoip_city() {城市名称},geoip_region(){地区代码},geoip_region_name(){地区名称}geoip_latitude(){经度},geoip_longitude(){纬度}。
通过IP地址获取地理位置:
调用Geocoder.geocode() 方法向地理编码服务发起请求,在地理坐标位置上添加Marker与InfoWindow:
本文主要利用Google Maps JavaScript API 和第三方网站提供的IP查询接口实现。
主要设计思路:IP地址经第三方网站查询得到地理位置———>通过Google Maps API 提供的Geocoder.geocode()方法将地理位置转化为地理坐标(经纬度)——>再将地理坐标在地图上标记。
一、IP地址查询接口
通过IP地址查询地理位置的方法有两种:1)使用数据库,可参考纯真IP数据库。
2)调用第三方网站的IP查询接口[1][2]。
1.新浪IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=IP地址
可通过jquery调用,下同:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script type="text/javascript"> $.getScript('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='+ip.value, function(_result){ if (remote_ip_info.ret == '1'){ alert(remote_ip_info.city + remote_ip_info.country + remote_ip_info.province + remote_ip_info.isp); } }); } </script>
2.搜狐IP地址查询接口:http://pv.sohu.com/cityjson
$.getScript('http://pv.sohu.com/cityjson', function(_result){ alert(returnCitySN.cip + ""+returnCitySN.cname); });
3.GeoIP接口:
有多个API接口提供,包括所在地的经纬度,但免费用户只能查询本机IP:
geoip_country_code(){国家代码},geoip_country_ name(){国家名称},geoip_city() {城市名称},geoip_region(){地区代码},geoip_region_name(){地区名称}geoip_latitude(){经度},geoip_longitude(){纬度}。
<script type="text/javascript" src="http://j.maxmind.com/app/geoip.js"></script> <script type="text/javascript"> alert(geoip_country_name() + geoip_region_name() + geoip_city()); </script>
通过IP地址获取地理位置:
var geoAddress = ""; var ipAddress = document.getElementById("id").value; $.getScript('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' + ipAddress, function(_result){ if (remote_ip_info.ret == 1) { geoAddress = remote_ip_info.country + remote_ip_info.province + remote_ip_info.city; } });
二、构建Google Maps
详情参考Google Maps JavaScript APIvar myLatlng = new google.maps.LatLng(23.1167,113.25); var mapOptions = { zoom:8, center:myLatlng, mapTypeId:google.maps.MapTypeId.ROADMAP } map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
三、地理编码
地理编码是将地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)转换为地理坐标(如纬度 37.423021 和经度 -122.083739)的过程,您可以根据该地理坐标放置标记或定位地图。调用Geocoder.geocode() 方法向地理编码服务发起请求,在地理坐标位置上添加Marker与InfoWindow:
geoCoder.geocode({'address':geoAddress},function(result,status){ if(status == google.maps.GeocoderStatus.OK){ map.setCenter(result[0].geometry.location); var marker = new google.maps.Marker({ map:map, position:result[0].geometry.location }) var contentString = "<h5>IP ADDRESS:" + ipAddress + "</h5>" + "<p>country:" + remote_ip_info.country + "</br>" + "province:" + remote_ip_info.province + "</br>" + "city:" + remote_ip_info.city + "</br>" + "isp:" + remote_ip_info.isp + "</p>"; var infoWindow = new google.maps.InfoWindow({ content:contentString }); google.maps.event.addListener(marker,'click',function(){ infoWindow.open(map,marker); }); setZoomLevel(); } else{ alert("Geocode was not successful for the following reason: " + status); } });
四、为详细程度不一的地址设置不同的地图缩放级别
通过第三方网站查询的地理地址的详细程度不一样,例如有的地址为:中国广东广州,有的为:中国台湾,有的仅为:斯洛文尼亚。为此,设置不同的地图缩放级别能获得更佳的体验效果。function setZoomLevel(){ if(remote_ip_info.city){ map.setZoom(8); } else if(remote_ip_info.province){ map.setZoom(5); } else{ map.setZoom(4); } }
五、成果展示
1、初始化,显示本机IP及位置:
2、查询IP:119.14.55.33 ,台湾
3、查询IP:109.123.56.2,斯洛文尼亚
相关文章推荐
- php利用新浪接口查询ip获取地理位置
- 利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
- 利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
- php利用新浪接口查询ip获取地理位置示例
- Javascript通过腾讯,新浪,谷歌 IP接口获取地理位置信息
- python使用在线API查询IP对应的地理位置信息实例
- python使用在线API查询IP对应的地理位置信息实例
- php利用新浪接口查询ip获取地理位置示例
- PHP查询Google PR值接口API介绍
- PHP一些可以查询IP地理位置、身份证所在地、手机归属地的接口
- Tp3.2 RESTFul 根据地区查询生成xml、html、json的Api接口的天气信息
- 玩转百度即用API(3)——IP信息查询
- 查询IP地理位置、身份证所在地、手机归属地的接口
- Java快递物流查询接口,怎么接入物流接口API,如何根据单号查询物流跟踪的详细信息的Demo详细说明。
- 利用GeoIP数据库及API进行地理定位查询 Java
- 第三方IP信息查询接口收集
- 新浪网易IP地区信息查询API接口调用方法
- 百度开发者API接口:获取经纬度和详细地理位置(Geocoding API和IP定位API)
- 汇集各种 webservice工厂,快递,ip,天气,身份证,手机,翻译,火车时刻,股票,邮编,二维码,公交,ISBN,ICP 查询接口 API
- gprs 获取基站信息,根据基站信息定位地理位置(基站免费查询接口)