ответная листовка: найти данные, отображаемые на карте при изменении уровня масштабирования - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть список мест, отображаемых рядом с картой листовки. На карте отображаются все места в списке. Когда я увеличиваю карту, видимые местоположения на карте уменьшаются (как и ожидалось). Теперь я хотел бы отфильтровать список, чтобы отобразить только те места, которые видны на карте. Может ли кто-нибудь помочь мне достичь этого? Я использую реактивную листовку и открытые карты.

Да, смотрите код ниже.

<Map center={mapCenter}
 zoom={5} maxZoom={OpportunityMap.LEAFLET_MAX_ZOOM} minZoom={2} zoomControl={true} ref={el => this.map = el} onZoomEnd={this.handleZoomStart(this.map)} >
handleZoomStart(map) {
        if(map) {
            let bounds = map.leafletElement.getBounds();
            map.leafletElement.eachLayer(function(layer){
                if(bounds.contains(layer.getBounds()))
                //here 
 }); 
 } 
} 

Я получаю ошибку ниже

'Uncaught TypeError: Невозможно прочитать свойство' lat 'из неопределенного'

потому что lat и long не определены для 'layer.getBounds ()'.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

getBounds() действительно только для определенных типов слоев. Опубликуйте скрипку или кодовую ручку со своей картой, и я смогу взглянуть.

0 голосов
/ 17 сентября 2018

Может быть другой способ сделать это, однако я бы пошел так;

После любого действия масштабирования я бы запустил функцию map.getBounds(); (вы можете сделать это в функции ComponentDidUpdate ()) и проверил, находится ли указанное местоположение внутри этой границы или нет. Затем я могу легко обновить свой список местоположений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...