0

以下代码可以正常工作,但是“开始”值来自分配给包含地图的 div 的 data-start 属性。

我需要以下内容来接受当前位置的当前坐标(来自地理位置代码):

    var geocoder = new google.maps.Geocoder();
        geocoder.geocode({ address: **start** }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                opts.center = results[0].geometry.location;
                self.map = new google.maps.Map($('#map')[0], opts);
                $.post($('#stockists form').attr('action'), { query: start }, function(data) {
                    self.addMarkers(data.results);
                });
                self.locateUser();
            } else {
                alert("Geocoder failed due to: " + status);
            }
        });

起始值假设采用当前位置而不是来自数据属性的静态值。你可以在这里看到完整的代码

这个想法是根据您当前的位置加载 data.results .....

4

1 回答 1

1

可以使用geolocation来检测(用户的)当前位置。

所以步骤:

  1. 检测用户位置
  2. 使用反向地理编码请求 formatted_address
  3. 设置$('#map').data('start')为反向地理编码的结果
  4. 创建一个新的 Map 对象并调用 init 方法:new Map().init();

例子:

  var geocoder=new google.maps.Geocoder();
  navigator.geolocation.getCurrentPosition(function(position) {
    geocoder.geocode({latLng:new google.maps.LatLng(position.coords.latitude, 
                                                    position.coords.longitude)},
          function(results,status){
            if (status == google.maps.GeocoderStatus.OK) {
              $('#map').data('start',results[0].formatted_address);
              new Map().init();
          }
        })
  });
于 2013-01-17T12:12:12.267 回答