agm-map angular6 на iphone (сафари и chrome) проблема рендеринга после изменения масштаба или изменения положения маркера - PullRequest
0 голосов
/ 01 мая 2020

Я использую agm-map в своем веб-приложении angualr 6. он отлично работает на устройствах android и на устройствах p c. но на iphone я получаю эту проблему при масштабировании или когда маркер меняет свою позицию. если я коснусь карты, то «не отрендеренные» точки будут отрисованы, и карта снова будет отображаться правильно. я пытался вызвать this.agmMap.triggerResize () на (zoomChange) (centerChange) (boundsChange), но не помогло.

.html
<div *ngIf="isDelivery" style="margin-bottom: 25px">
   <agm-map #AgmMap  (zoomChange) ="triggerResize()" (centerChange)="triggerResize()" (boundsChange)="triggerResize()"
     [latitude]="lat" [longitude]="lng" [zoom]= 14 [streetViewControl]=false [disableDefaultUI]=true
     [disableDoubleClickZoom]=true [fullscreenControl]=true [zoomControl]=true [gestureHandling]="cooperative"
     [clickableIcons]=false>
     <agm-marker [visible]="dsService.isMarkerVisible" [latitude]="lat" [longitude]="lng"></agm-marker>
   </agm-map>
</div>



.ts
import { AgmMap } from '@agm/core';
@ViewChild('AgmMap') public agmMap: AgmMap;
triggerResize(){
    this.agmMap.triggerResize().then(x=>{console.log(x)}).catch();
  }
  private trackMe() {
    if (navigator.geolocation) {
      this.watchID = navigator.geolocation.watchPosition((position) => {
        this.dsService.isMarkerVisible = true;
        this.currPosition = position;
        this.lat = position.coords.latitude;
        this.lng = position.coords.longitude;
        this.agmMap.triggerResize().then().catch();
      }
        , (error) => {}
        , { maximumAge: 5000, timeout: 5000, enableHighAccuracy: true }
      );
    }
  }

.css
agm-map {
  height:250px!important;;
  width: 100%;
}

1 Ответ

0 голосов
/ 06 мая 2020

Вместо использования Lat, Lng отдельно. Создайте объект скажем UserObj = {Lat: 0, Lng: 0} Большую часть времени это решало проблемы для меня.

...