【问题标题】:Add multiple markers to rails map向 Rails 地图添加多个标记
【发布时间】:2018-11-02 01:52:27
【问题描述】:

我已经在我的 ruby​​ on rails web 应用程序上实现了谷歌地图。我可以很好地显示地图,也可以很好地放置标记。我的问题是我有 2 个 JavaScript 函数可以刷新地图并在地图上放置一个标记。我希望能够保留当前地图,并使用我的功能向地图添加另一个标记。如何阻止我的地图刷新以显示超过 1 个标记?

// application.js

var map;

function initMap() {
  var lat=29.732585;
  var lng=-95.462830;

  map = new google.maps.Map(document.getElementById('map'), {
      center: {lat: 29.7604, lng: -95.3698},
      zoom: 10.25,
  });
  var marker = new google.maps.Marker({
      position: {lat:29.732585,lng:-95.462830},
      map: map
  });
}

function getEmployee() {
  map = new google.maps.Map(document.getElementById('map'), {
      center: {lat: 29.7604, lng: -95.3698},
      zoom: 10.25,
  });
  var marker = new google.maps.Marker({
      position: {lat:29.7154,lng:-95.3893},
      map: map
  });
}

function getLocation() {
  map = new google.maps.Map(document.getElementById('map'), {
      center: {lat: 29.7604, lng: -95.3698},
      zoom: 10.25,
  });
  var marker = new google.maps.Marker({
      position: {lat:29.7560,lng:-95.3573},
      map: map
  });
}

【问题讨论】:

    标签: javascript ruby-on-rails google-maps map-api


    【解决方案1】:

    调用getEmployee()getLocation() 时,您可以通过调用new google.maps.Map 重新创建地图。这就是您的地图在每次调用时都会刷新的原因。

    只需从这两个函数中删除重新创建的地图即可。您在initMap() 调用上创建地图并将其存储在全局变量map 中,因此它可以在您创建标记的getEmployee()getLocation() 中使用。

    【讨论】:

    • 如何在我的 initMap() 中创建地图并将其保存为全局变量,在我的 getEmployee() 和 getLocation() 中如何引用全局地图?
    • 你已经拥有了全局变量map,通过在任何函数中声明它。在initMap() 中创建地图时,将其保存到该全局变量中。因此,只需从其他 2 个函数中删除地图重新初始化 (map = new google.maps.Map(...)),就可以了。
    • 好的。我只是想确定一下。那么其他两个函数只包含标记信息吗?像这样。 var marker = new google.maps.Marker({ position: {lat:29.7560,lng:-95.3573}, map: map });
    • 感谢您的帮助。我按照你的建议做了。
    猜你喜欢
    • 2013-03-10
    • 1970-01-01
    • 2015-08-15
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多