基于地理编码的 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 地图的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google 地图避免地理编码限制的替代方法

使用Google地图进行地理编码

Google Maps API 地理编码 <> 静态地图?

Ruby 地理编码库与最新的 Google 地图、Yahoo 地图、Bing API 兼容

如何在 Worklight 上要求 Google 地图地理编码脚本

使用 React 根据地理位置更新 Google 地图