Использование getBounds / fitBounds для группы объектов с ngx-буклетом в угловых - PullRequest
0 голосов
/ 01 июня 2018

В создаваемом приложении я динамически добавляю группы точек в группу объектов, на которую ссылается событие щелчка на вложенной карте.Итак, суть в том, что у меня есть карта страны с разными регионами.Нажатие на область соответствует границам карты для этого многоугольника и показывает точки, связанные с этим многоугольником, скажем, города.Нажатие на одну точку / город приводит к дальнейшему утомлению и открывает другую группу точек, связанных с первой нажатой точкой, например, все библиотеки в выбранном городе.

Проблема в том, что однажды моя последняя группа точек (библиотеки) находится в FeatureGroup (что необходимо из-за вложенной природы моих событий нажатия), я не могу использовать fitBounds / getBounds для группы.Вот минимальный пример (на основе учебника ngx-leaflet-tutorial-ngcli):

app.component.html

<div class="map"
  leaflet
  (leafletMapReady)="onMapReady($event)"
  [leafletOptions]="options"></div>

app.component.ts

import { Component, OnInit } from '@angular/core';

import * as L from 'leaflet';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

  googleMaps = L.tileLayer('http://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}', {
    maxZoom: 20,
    subdomains: ['mt0', 'mt1', 'mt2', 'mt3'],
    detectRetina: true
  });

  summit = L.marker([ 46.8523, -121.7603 ], {
    icon: L.icon({
      iconSize: [ 25, 41 ],
      iconAnchor: [ 13, 41 ],
      iconUrl: 'leaflet/marker-icon.png',
      shadowUrl: 'leaflet/marker-shadow.png'
    })
  });
  paradise = L.marker([ 46.78465227596462,-121.74141269177198 ], {
    icon: L.icon({
      iconSize: [ 25, 41 ],
      iconAnchor: [ 13, 41 ],
      iconUrl: 'leaflet/marker-icon.png',
      shadowUrl: 'leaflet/marker-shadow.png'
    })
  });

  fGroup = L.featureGroup();

  options = {
    layers: [ this.googleMaps, this.fGroup ],
    zoom: 7,
    center: L.latLng([ 46.879966, -121.726909 ])
  };

  onMapReady(map: L.Map) {
    this.paradise.addTo(this.fGroup);
    this.summit.addTo(this.fGroup);
    console.log(this.fGroup);
  }

  ngOnInit(){

  }
}

Я использовал console.log, чтобы показать вывод featureGroup:

NewClass {options: {…}, _layers: {…}, _initHooksCalled: true, _leaflet_id: 183, _mapToAdd: NewClass, …}
options: {}
_initHooksCalled: true
_layers: {184: NewClass, 186: NewClass}
_leaflet_id: 183
_map: NewClass {options: {…}, _container: div.map.leaflet-container.leaflet-touch.leaflet-retina.leaflet-fade-anim.leaflet-grab.leaflet-touch-…, _leaflet_id: 2, _containerId: 3, _fadeAnimated: true, …}
_mapToAdd: NewClass {options: {…}, _container: div.map.leaflet-container.leaflet-touch.leaflet-retina.leaflet-fade-anim.leaflet-grab.leaflet-touch-…, _leaflet_id: 2, _containerId: 3, _fadeAnimated: true, …}
_zoomAnimated: true
__proto__: NewClass

Как видите, метод _bounds недоступен.Есть ли способ привязать границы к группе объектов в листе ngx?

1 Ответ

0 голосов
/ 11 июня 2018

Как указал @ghybs, использование getBounds() непосредственно для группы объектов на самом деле работает в этом примере.В моем реальном приложении событие было вложенным, поэтому ключом к тому, чтобы fitBounds() работал, было использование this.changeDetector.detectChanges() за этой документации .

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