将用户位置标记添加到现有gmap

时间:2012-11-09 11:26:18

标签: google-maps drupal drupal-7 drupal-gmap

我正在使用Drupal 7 - 位置,GMap模块。我有一个视图,将结果呈现在gmap中。这里的一切都很好,我得到了所有的标记。现在我需要一个“查找我的位置”按钮,该按钮显示用户当前位置并向现有地图添加标记。 Google Map Api V3始终适用于新创建的地图,但我找不到在当前页面中返回现有地图的功能。

Gmap模块提供了一个JS函数 - Drupal.gmap.getMap('ur-map-id'),它应该返回一个指向id为id的地图的指针。但这没效果。

有人可以指导我如何解决这个问题吗?我可以使用Google Maps API吗?我需要保留原始地图及其所有标记。

2 个答案:

答案 0 :(得分:2)

以下是供参考的内容。

if (typeof(navigator.geolocation) !== 'undefined') {
  var showUserOnMap = function(position) {
    var map = Drupal.gmap.getMap('gmap-auto1map-gmap0');
    if (typeof(map) !== 'undefined' && map !== false) {
      latitude = position.coords.latitude;
      longitude = position.coords.longitude;
      var marker = {
        latitude: latitude,
        longitude: longitude,
        markername: Drupal.t('You'),
        opts: {
          title: Drupal.t('You')
        }
      }
      marker.opts.position = new google.maps.LatLng(latitude, longitude);
      marker.opts.map = map.map;
      Drupal.gmap.factory.marker(marker.opts);
    }
  };

  // Get the current location
  navigator.geolocation.getCurrentPosition(showUserOnMap);
}

答案 1 :(得分:1)

我也遇到了这个问题,您可以将此jquery代码放入其中以实际居中于当前位置 - 但不添加任何标记。只需将其添加到主题中的任何位置,

jQuery(document).ready(function() {

jQuery(function($) {
$.extend({
initialize: function () {
var m = Drupal.gmap.getMap('auto1map');
if (m.map && m.markersready) {
$.setCoords();
}
else {
m.bind('markersready', function(data) {
$.setCoords();
});
}
},
setCoords: function () {
navigator.geolocation.getCurrentPosition(function (position) {
var gmap = Drupal.gmap.getMap('auto1map').map;
var lat = position.coords.latitude;
var lng = position.coords.longitude;
gmap.setCenter(new google.maps.LatLng(lat, lng));
gmap.setZoom(13);
});
}
});
$.initialize();
});

});

现在,您可以将地图集中在您的位置周围,现在我需要找到一种方法将标记放在此位置。