Используйте листовку Geocoder без установки маркеров при поиске

голоса
0

В настоящее время я использую карту листка и добавил этот геокодер плагин: https://github.com/perliedman/leaflet-control-geocoder . Моя проблема в том, что каждый раз, когда я искать место, он также устанавливает маркер в этом месте, но я не хочу, чтобы это. Он должен только увеличивать и уменьшать масштаб не установлен маркер.

Кто-нибудь знает, как отключить эту функцию или удалить набор маркер мгновенно?

Набор маркеров выглядит следующим образом

Я работаю в Ионической / машинописи и мой код для использования геокодера заключается в следующем:

leaflet.Control.geocoder().addTo(this.map);   

Согласно GitHub, defaultMarkGeocode лжи следует отключить маркер. При использовании его, я просто получаю эту ошибку:

Не удается прочитать свойство «_leaflet_id» неопределенных

Я также попытался

var geocoder = L.Control.geocoder({
    defaultMarkGeocode: false
})
.on('markgeocode', function(e) {
    var bbox = e.geocode.bbox;
    var poly = L.polygon([
         bbox.getSouthEast(),
         bbox.getNorthEast(),
         bbox.getNorthWest(),
         bbox.getSouthWest()
    ]).addTo(map);
    map.fitBounds(poly.getBounds());
})
.addTo(map);

но это только говорит мне, что переменная геокодер никогда не использовалась, и я получаю эту ошибку:

Не удается прочитать свойство «addLayer» неопределенных

Если у вас есть какие-либо предложения, как это исправить, и либо отключить или удалить этот маркер, я был бы очень благодарно.

Привет

Задан 22/07/2018 в 17:40
источник пользователем
На других языках...                            


2 ответов

голоса
0

Не удалось воспроизвести точные сообщения об ошибках , которые описывают:

var map = L.map('map').setView([0, 0], 2);

var geocoder = L.Control.geocoder({
    defaultMarkGeocode: false,
    collapsed: false
  })
  .on('markgeocode', function(e) {
    var bbox = e.geocode.bbox;
    var poly = L.polygon([
      bbox.getSouthEast(),
      bbox.getNorthEast(),
      bbox.getNorthWest(),
      bbox.getSouthWest()
    ]).addTo(map);
    map.fitBounds(poly.getBounds());
  })
  .addTo(map);

L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
html,
body,
#map {
  height: 100%;
  margin: 0;
}
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin="" />
<script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet-src.js" integrity="sha512-IkGU/uDhB9u9F8k+2OsA6XXoowIhOuQL1NTgNZHY1nkURnqEGlDZq3GsfmdJdKFe1k1zOc6YU2K7qY+hF9AodA==" crossorigin=""></script>

<link rel="stylesheet" href="https://unpkg.com/leaflet-control-geocoder@1.5.8/dist/Control.Geocoder.css" />
<script src="https://unpkg.com/leaflet-control-geocoder@1.5.8/dist/Control.Geocoder.js"></script>

<div id="map"></div>

Однако , если collapsedпараметр имеет значение false, есть еще одно сообщение об ошибке:

Ошибка типа: this.options.geocoder [режим] не является функцией

... , которая решается в плагине репо по PR perliedman / листовка-контроль-геокодера # 184 , но это еще не поставляется в выпущенной версии в НПМ / unpkg CDN.

Если вам нужна дополнительная помощь на ваши сообщения об ошибках, пожалуйста , укажите код , который воспроизводит их .

Ответил 23/07/2018 в 13:40
источник пользователем

голоса
0

Пожалуйста, попробуйте это с небольшими изменениями.

var map = L.map('map').setView([0, 0], 2);

var geocoder = L.Control.geocoder({
    defaultMarkGeocode: false,
    collapsed: false
  })
  .on('markgeocode', (e) => {
    var bbox = e.geocode.bbox;
    var poly = L.polygon([
      bbox.getSouthEast(),
      bbox.getNorthEast(),
      bbox.getNorthWest(),
      bbox.getSouthWest()
    ]).addTo(map);
    map.fitBounds(poly.getBounds());
  })
  .addTo(map);
Ответил 22/08/2019 в 12:09
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more