基于地理编码IP的Google地图中心

2024-03-28 17:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,每当有人打开我的(谷歌)地图,我希望它默认为他们的大致位置。

有没有一个简单的方法来使用Google的API或者我必须编写一个自定义代码(这是基于python的应用程序)?


Tags: 方法代码api应用程序google地图
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);

只需将中心设置为服务呼叫结果的纬度/液化天然气。

the docs,只要map.setCenter(new GLatLng(37.4419, -122.1419), 13);或任何其他坐标。通常首选在页面的Javascript中进行。

如果你的意思是将IP转换成lat和long,我认为Google API不支持这一点,但是也有其他web服务支持这一点,比如maxmindhostip,还有很多其他的。我不知道该推荐哪一个——试试看,会是我的建议!

您可以使用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);
    }
}

相关问题 更多 >