0

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

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

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

4

2 回答 2

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);
}
于 2013-09-26T01:35:20.003 回答
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();
});

});

现在您可以将地图围绕您的位置居中,现在我需要想办法在该位置放置一个标记。

于 2013-01-15T12:51:01.727 回答