基于地理编码的 IP 居中 Google 地图
Posted
技术标签:
【中文标题】基于地理编码的 IP 居中 Google 地图【英文标题】:Center Google Map Based on geocoded IP 【发布时间】:2010-11-24 20:13:10 【问题描述】:基本上每当有人打开我的 (Google) 地图时,我希望它默认为他们的大概位置。
有没有一种简单的方法可以使用 Google 的 API 来完成,还是我必须编写自定义代码(这是基于 python 的应用程序)?
【问题讨论】:
【参考方案1】:您可以使用 Google API 的内置 ClientLocation 对象:
if (GBrowserIsCompatible())
var map = new google.maps.Map2(document.getElementById("mapdiv"));
if (google.loader.ClientLocation)
var center = new google.maps.LatLng(
google.loader.ClientLocation.latitude,
google.loader.ClientLocation.longitude
);
var zoom = 8;
map.setCenter(center, zoom);
【讨论】:
【参考方案2】:查看http://www.ipinfodb.com/。您可以通过向其服务传递 IP 地址来获取纬度和经度值。我最近做了一些事情,我创建了一个简单的服务来获取当前的 IP 地址,然后将其传递给服务(“api/location/city”只是一个卷曲 ipinfodb 服务的服务)。使用 jquery:
$.get("api/location/city", null, function(data, textStatus)
if (data != null)
if (data.Status == "OK")
var lat = parseFloat(data.Latitude);
var lng = parseFloat(data.Longitude);
$.setCenter(lat, lng, $.settings.defaultCityZoom);
manager = new MarkerManager(map, trackMarkers : true );
var e = $.createUserMarker(map.getCenter());
e.bindInfoWindowhtml($("#marker-content-event").html());
var m = [];
m.push(e);
// map.addOverlay(e);
manager.addMarkers(m, 10);
manager.refresh();
else
$.setCenter($.settings.defaultLat, $.settings.defaultLng, $.settings.defaultZoom);
, "json");
这里的关键是这一行:
$.setCenter(lat, lng, $.settings.defaultCityZoom);
只需将中心设置为服务调用结果的 lat/lng。
【讨论】:
【参考方案3】:根据the docs,只需map.setCenter(new GLatLng(37.4419, -122.1419), 13);
或任何其他坐标。通常首选在页面的 javascript 中执行此操作。
如果您的意思是将 IP 转换为经纬度,我认为 Google API 不支持该功能,但还有其他 Web 服务可以支持,例如 maxmind、hostip 以及许多其他的。我不知道要推荐哪一个——试试几个,我的建议!
【讨论】:
【参考方案4】:如果用户使用 FireFox 3.5/google gears,您可以从浏览器本身检索 lat 和 lng。 你会发现另一个*** post here的详细信息
【讨论】:
【参考方案5】:Google 地图的 IP 地址地理编码 API:http://web3o.blogspot.com/2011/06/ip-address-geocoding-api-for-google.html
【讨论】:
只包含链接的答案是considered bad practice。请在此处总结内容(请勿复制/粘贴),以便答案可以独立存在。如果您不这样做,您的答案将面临被删除的风险,尤其是在链接失效的情况下。以上是关于基于地理编码的 IP 居中 Google 地图的主要内容,如果未能解决你的问题,请参考以下文章
Ruby 地理编码库与最新的 Google 地图、Yahoo 地图、Bing API 兼容