2012-11-09 43 views
0

我正在使用Drupal 7 - 位置,GMap模塊。我有一個視圖,在gmap中呈現結果。一切工作正常,我得到所有的標記。現在我需要一個查找我的位置按鈕,它顯示用戶當前的位置,並添加一個標記到現有的地圖。 Google Map Api V3始終在新創建的地圖上工作,我無法找到返回當前頁面中已有地圖的函數。將用戶位置標記添加到現有的gmap中

Gmap模塊提供了一個JS函數--Drupal.gmap.getMap('ur-map-id'),它應該返回一個指向給定id的映射的指針。但是這不起作用。

有人請指導我如何去做這件事嗎?我可以使用Google Maps API嗎?我需要保留原始地圖及其所有標記。

回答

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(); 
}); 

}); 

現在你可以居中地圖在你的位置,現在我需要找出一種方法來放置標記下來在這個位置。

+0

謝謝。但是,該地圖也可以用作m ['map'],其中m如您所提及的Drupal.gmap.getMap(map-id)。 – SGhosh

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); 
}