根据地理编码IP中心化谷歌地图
基本上,我希望每当有人打开我的(谷歌)地图时,它能默认显示他们的大致位置。
有没有简单的方法可以通过谷歌的接口来实现,还是说我需要写一些自定义代码(这是一个基于Python的应用)?
5 个回答
8
你可以使用谷歌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);
}
}
3
你可以去看看 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);
就是把中心点设置为服务调用返回的经纬度。