基本上每当有人打开我的(谷歌)地图时,我都希望它默认为它们的大致位置。
使用Google的API有一种简单的方法吗?还是我必须编写自定义代码(这是基于python的应用程序)?
答案 0 :(得分:8)
您可以使用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);
}
}
答案 1 :(得分: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);
只需将中心设置为服务呼叫结果的lat / lng。
答案 2 :(得分:0)
每the docs,只需map.setCenter(new GLatLng(37.4419, -122.1419), 13);
或其他任何坐标。通常首选在页面的Javascript中执行此操作。
如果您的意思是将IP转换为lat和long,我认为Google API并不支持,但是还有其他一些网络服务,例如maxmind,hostip和许多, 很多其他的。我不知道推荐哪一个 - 尝试一些,这将是我的建议!
答案 3 :(得分:0)
如果用户使用FireFox 3.5 / google齿轮,您可以从浏览器本身检索lat和lng。 您可以找到另一个stackoverflow post here
的详细信息答案 4 :(得分:0)
Google地图的IP地址地理编码API:http://web3o.blogspot.com/2011/06/ip-address-geocoding-api-for-google.html