0

Drupal 7 - Location、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 に答える