向Rails地图添加多个标记

时间:2018-11-02 01:52:28

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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