Как удалить определенную форму маркера Google Map, когда пользователь начинает вводить другое название места в текстовом поле - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь убрать маркер места с карты. когда пользователь выполняет событие нажатия клавиши в поле ввода. в моем проекте у меня есть два компонента gmap-autocomplete, оба создают разные маркеры на map.so, когда я использую setMap (null), тогда он удаляет все markes формы map.i нужно удалить один в время. Пожалуйста, помогите Спасибо.!

 refreshMapEndSource(event) {
      if (document.getElementById('txtDestination').value != '') {
        let endOrigin = document.getElementById('txtDestination').value
        if (this.markRemEnd != null) {
          if (endOrigin != this.markRemEnd.fplace) {
            console.log('NOt Equal')
             console.log(this.$google.marker[i].fplace)
              this.$google.marker[0].setMap(null)
          }
        }
      } else {
        //
      }
    }

1 Ответ

1 голос
/ 11 мая 2019

Я не уверен, что вы пытаетесь сделать, но я думаю, что вы хотите удалить маркеры, созданные из компонента A или B.

Чтобы сделать это, когда вы создаете маркер, вы должны сохранить его в некотором массиве, назовем его markers:

let markers = []

let marker = new google.maps.Marker({
  position: location,
  map: map
})

markers.push({
  type: 'A' // or 'B',
  marker
})

Тогда всякий раз, когда вы хотите удалить маркеры из A:

markers.forEach(marker => {
  if (marker.type === 'A') marker.marker.setMap(null)
})

markers = this.markers.filter(marker => marker.type !== 'A')

Ну, если мое предположение неверно, и вы действительно хотите удалить определенный маркер, который очень похож, вы должны знать, какой маркер вы удалили.

markers.push({
  name: 'abc',
  marker
})

markers.forEach(marker => {
  if (marker.name === 'abc') marker.marker.setMap(null)
})
...