谷歌地图 - 当前位置

Posted

技术标签:

【中文标题】谷歌地图 - 当前位置【英文标题】:Google Map - Current location 【发布时间】:2010-03-20 09:03:57 【问题描述】:

我想获取当前用户位置的地址字符串。这可能吗?

非常感谢。 问候

【问题讨论】:

【参考方案1】:

用户的位置在 google.loader.ClientLocation 中可用(如果 IP 已知,这将包含基于客户端 IP 的猜测)

google.loader.ClientLocation

当应用程序使用 AJAX API 加载器,加载器尝试 根据客户的地理位置定位客户 IP地址。如果这个过程成功, 客户的位置,范围为 地铁级别,可在 google.loader.ClientLocation 属性。 如果该过程未能找到匹配项, 此属性设置为 null。

http://code.google.com/apis/ajax/documentation/#ClientLocation

【讨论】:

【参考方案2】:

如果您想获取街道地址

包括 JSMAP Api Key,keep all together from the wizard

我的代码如下所示:(也使用了一点 jQuery)

var geocoder = null;
var lat = null;
var lng = null;

$(function() 
   if (GBrowserIsCompatible()) 

 if (google.loader.ClientLocation &&
     // i used this here cause not always 
     //this retrieve the correct LAT & LON
     // so set it manually
      google.loader.ClientLocation.address.country_code == "IT" ) 
      lat = google.loader.ClientLocation.latitude;
      lng = google.loader.ClientLocation.longitude;
       else 
      //alert( 'Insert Your Latitude & longitude manually!' );
      lat = '42.464826';
      lng = '14.214095';
      
    //creat the full LAT + LON
    points = new GLatLng( lat , lng ); 
    //get the Street Address
    get_address(points);
    
 );

    function get_address(latlng) 
      if (latlng) 
      geocoder = new GClientGeocoder();
        geocoder.getLocations(latlng, function(addresses) 
          if(addresses.Status.code != 200) 
            alert("reverse geocoder failed to find an address for " + latlng.toUrlValue());
          
          else 
            address = addresses.Placemark[0];
            var myhtml = address.address;

            $('#address').text(myHtml);

          
        );
      
    ;

peraphs 阅读此链接也可能有所帮助:

Get street address at lat/long pair

【讨论】:

【参考方案3】:

如果您需要比 IP 地理定位更精确的信息,您可以在支持的浏览器(尤其是 Firefox 3.5 和 Mobile Safari)中使用 W3C Geolocation API 来请求用户的纬度和经度,然后使用 Google's client-side reverse geocoding service 猜测用户的近似值街道地址。 (my test page 中包含这两个步骤的代码示例。)

如果您走这条路,请务必提前向您的用户解释您为什么要请求他们的位置以及您如何使用他们的信息(例如,在他们实际提交表单之前您不会存储它),因为它在技术上是 API 所要求的,因为有些用户会被您猜出他们的街道地址的容易程度吓到。

【讨论】:

【参考方案4】:

是的,可以使用 html 5 和 Google API 3 来实现,在给定的代码中,您必须更改 APIKey 并且 map-canvas 是 html 正文中的一个元素

  <script type="text/javascript"
     src="https://maps.googleapis.com/maps/api/js?key=yourAPIKey&sensor=false"></script>
  <script type="text/javascript">
     var lat;
     var lng;

         function initialize() 
      if (navigator.geolocation)
        
        navigator.geolocation.getCurrentPosition(showPosition);
               


         
     function showPosition(position)
      
      lat = position.coords.latitude; 
      lng = position.coords.longitude;
     var myLatlng = new google.maps.LatLng(lat, lng);

     var myTittle = "My Current Location! Lat: " + lat + "lng: " + lng;
     var marker = new google.maps.Marker(
         position: myLatlng,
         title: myTittle
     );

           var mapOptions = 
             center: myLatlng,
             zoom: 16,
             mapTypeId: google.maps.MapTypeId.ROADMAP
           ;
           var map = new google.maps.Map(document.getElementById("map-canvas"),
               mapOptions);
     marker.setMap(map);    
      
         google.maps.event.addDomListener(window, 'load', initialize);

  </script>

【讨论】:

【参考方案5】:

我正在寻找如何绘制当前位置和目的地位置的地图。为了实现这一点,我就是这样做的:

注意* 将 YOUR_DESTINATION_ADDRESS 替换为以下格式的地址:“147+Wyndham+Street+N+,+Suite+206,+Guelph,+On,+N1H+4E9”

<div id="Map" style="width: 100%; height: 600px;"> </div>
<script type="text/javascript">
$(function()
    var zoom = 11;
    function success(position) 

        var LAT = position.coords.latitude;
        var LONG = position.coords.longitude;
        $('#Map').append('<p>Current Latitude: ' + LAT + '<br/>Current Logitude: ' + LONG +'<br/><br/>Note* This may not display your exact location, but just your city. Works better on mobile devices</p>');


        var map  = '<iframe style="width: 100%; height: 600px;" frameborder="0" scrolling="no" margin margin src="http://maps.google.ca/maps?source=s_d&saddr=' + LAT +',+' + LONG +'&daddr=**YOUR_DESTINATION_ADDRESS**&ie=UTF8&t=hz=' + zoom + '&output=embed"></iframe>';

        $('#Map').append(map);

    

    function error()
        /*Error Code*/
    

    function MakeMap()
        if (navigator.geolocation) 
            navigator.geolocation.getCurrentPosition(success, error);
         
    

    MakeMap();
);
</script>

【讨论】:

以上是关于谷歌地图 - 当前位置的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图当前位置绘图

谷歌地图中的当前位置与swift

如何在谷歌地图应用程序中从另一个位置显示当前位置?

谷歌地图查找当前位置和附近的地方

ANDROID - 谷歌地图获取当前位置

使用谷歌地图检索当前位置