【问题标题】:Cluster click event in Agm MapAgm Map 中的集群点击事件
【发布时间】:2020-06-27 00:34:12
【问题描述】:

尝试使用 agm-map 中的纬度和经度绘制标记。使用 agm-marker-cluster 对标记进行聚类。如果有 10 个标记具有相同的纬度和长度,我将如何获得群集点击以及这 10 个标记的详细信息聚集在一起?

<agm-marker-cluster *ngFor="let item of ClusterArray; let i = index" [styles]="item[1]">
  <agm-marker *ngFor="let items of item[0]" [latitude]="items.latitude" [longitude]="items.longitude"[iconUrl]="item[2]" (markerClick)="markerClick(items)">
  </agm-marker>
</agm-marker-cluster>

【问题讨论】:

    标签: angular agm-map


    【解决方案1】:

    see this 为我工作:

    marker-cluster.directive.ts

    
    import { Directive, OnInit, Input, EventEmitter } from '@angular/core';
    import { GoogleMapsAPIWrapper } from '@agm/core';
    import { GoogleMap, Marker } from '@agm/core/services/google-maps-types';
    import { Observable } from 'rxjs';
    import { environment } from '../../environments/environment';
    import { AppService } from '../service/app.service';
    import 'js-marker-clusterer/src/markerclusterer.js';
    
    declare const google;
    declare const MarkerClusterer;
    
    @Directive({
      selector: 'marker-cluster',
      outputs: ['markerClick'],
    })
    
    
    export class MarkerCluster implements OnInit {
    
      markerClick: EventEmitter<string> = new EventEmitter<string>();
    
      public environment = environment;
      //set google maps defaults
        //zoom level
        zoom: number = 12;
        //start position
        lat:number  = 45.508755;
        lng:number = -73.587579;
    
        urlMarkers = environment.urlServiceWeb + 'liste/pub/all/all/true/false';
    
        markers: marker[] = [];
        map: any;
        selectedMarker: any;
    
      constructor(
        private gmapsApi: GoogleMapsAPIWrapper,
        private httpService: AppService,
    
        ) { }
    
    ngOnInit() {
        this.gmapsApi.getNativeMap().then(map => {
          this.map = map;
          this.httpService.getData(this.urlMarkers)
          .subscribe(
             data => {
    
                const corveeMarkers = [];
    
                for (let key in data.markers) {
                  let statusCorvee = data.markers[key].estPublic;
                  let iconUrl;
                  if(statusCorvee==true){
                     iconUrl = {
                      url: 'assets/icons/icon-public.png'
                    }
                  }else{
                    iconUrl = {
                      url: 'assets/icons/icon-prive.png'
                    }
                  }
    
                  var marker = new google.maps.Marker({
                    position: new google.maps.LatLng(data.markers[key].latitude, data.markers[key].longitude),
                    icon: iconUrl
                  });
                  google.maps.event.addListener(marker, 'click', () => {
    
                      this.markerClick.emit(data.markers[key]);
                      this.selectedMarker = data.markers[key];
    
                  });
                   corveeMarkers.push(marker);
                }
                var markerCluster = new MarkerClusterer(this.map, corveeMarkers, {imagePath: "https://raw.githubusercontent.com/googlemaps/js-marker-clusterer/gh-pages/images/m"});
            },
            error => {
                //console.log(error);
            }
           );
        });
      } // end ngOnInit
    }
    
    interface marker {
      lat: number;
      lng: number;
      status: string;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多