我正在使用Drupal 7 - 位置,GMap模块。我有一个视图,将结果呈现在gmap中。这里的一切都很好,我得到了所有的标记。现在我需要一个“查找我的位置”按钮,该按钮显示用户当前位置并向现有地图添加标记。 Google Map Api V3始终适用于新创建的地图,但我找不到在当前页面中返回现有地图的功能。
Gmap模块提供了一个JS函数 - Drupal.gmap.getMap('ur-map-id'),它应该返回一个指向id为id的地图的指针。但这没效果。
有人可以指导我如何解决这个问题吗?我可以使用Google Maps API吗?我需要保留原始地图及其所有标记。
答案 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();
});
});
现在,您可以将地图集中在您的位置周围,现在我需要找到一种方法将标记放在此位置。