【问题标题】:Add user location marker to existing gmap将用户位置标记添加到现有 gmap
【发布时间】:2013-11-25 00:03:30
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    这里有一些参考。

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

    【讨论】:

      【解决方案2】:

      我也遇到了这个问题,你可以把这个 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();
      });
      
      });
      

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

      【讨论】:

      • 谢谢。但是,地图也可以作为 m['map'] 使用,其中 m 是您提到的 Drupal.gmap.getMap(map-id)。
      猜你喜欢
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 2017-08-05
      • 2020-06-14
      • 2021-09-03
      相关资源
      最近更新 更多