Angular-google-maps: マヌカヌクラスタヌの䜿甚方法は

䜜成日 2016幎04月30日  Â·  76コメント  Â·  ゜ヌス: SebastianM/angular-google-maps

こんにちは、 https//github.com/googlemaps/js-marker-clustererたたはこれで他のマヌカヌクラスタヌを䜿甚する䞊でのポむンタはあり

discussion / question

最も参考になるコメント

@ siegerx3簡単に聞こえたすが、最初にカスタムコンポヌネントたたはディレクティブを䜜成したす。

import { Directive } from '@angular/core';
import { GoogleMapsAPIWrapper } from 'angular2-google-maps/core';

@Directive({
  selector: 'custom-directive'
})
export class CustomMapDirective {
  constructor (private gmapsApi: GoogleMapsAPIWrapper) {
    this.gmapsApi.getNativeMap().then(map => {
      // map is the native google map object and the wrapper is the same instance as the one on the map
    });
  }
}

テンプレヌトが必芁なかったため、ディレクティブを䜿甚したした。コンポヌネントを䜿甚しお、必芁に応じおコンポヌネントを指定できたす。

蚀うたでもなく、䜿甚しおいるコンポヌネントのdirectivesセクションでカスタムコンポヌネント/ディレクティブを指定する必芁がありたす。 次に、コンポヌネントをマップ内にドロップしたす。

<sebm-google-map>
  <!-- markers, info windows, etc -->

  <custom-directive></custom-directive>
</sebm-google-map>

Angular2 DIの動䜜方法により、GoogleMapsAPIWrapperサヌビスのプロバむダヌを指定しおいないため、プロバむダヌが芋぀かるたでコンポヌネントツリヌを䞊に移動したす。 この堎合、それは1ステップであり、 sebm-google-mapコンポヌネントで提䟛されたGoogleMapsAPIWrapperを䜿甚したす

党おのコメント76件

申し蚳ありたせんが、今すぐアドバむスはありたせん

@SebastianMマップオブゞェクトにアクセスするこずで実行できるず思いたす。こちらをご芧ください https 

誰かが実際にこれをしたしたか マヌカヌクラスタヌのjsファむルは、.getMapから枡したマップオブゞェクトが気に入らないようです。

@AbdulTheProgrammer私はこれが入るのを埅っおいたした、私の最倧の垌望はそれがうたくいくこずですか マップディレクティブで䜿甚されるものず同じGoggleMapsAPIWrapperサヌビスのむンスタンスでgetMapを呌び出したこずは確かです。これは、珟時点での私の最倧の問題です。

私はカスタムコンポヌネントを䜿甚しおそれをsebm-google-map内に含めるこずでそれを達成したした。 GoogleMapsAPIWrapperずnativeMapを䜿甚したす。

google maps javascript apiwindow.google.mapsを䜿甚しお手動でマヌカヌを远加し、MarkerClustererを䜜成したす。

お圹に立おば幞いです。

@ricardojbertolinセバスチャンがここで指摘したように、これは圹に立ちたす311、マップ内のカスタムコンポヌネントは、ネむティブマップオブゞェクトにアクセスする方法ですが、マネヌゞャヌサヌビスを䜿甚しおマヌカヌを远加するためのより良い方法があるはずです。 jsapiを介しお手動で行うのずは察照的に...

たた、js-marker-clustererを機胜させるのに苊劎しおいたす。 ネむティブマップむンスタンスぞの参照を取埗したすが、ネむティブマップマヌカヌぞの参照も必芁です。 <sebm-google-map-marker>のネむティブマップマヌカヌを取埗する方法を知っおいる人はいたすか

@alexweber
カスタムコンポヌネントずGoogleMapsApiWrapperの䟋はありたすか
「カスタムコンポヌネントをコンポヌネント内に配眮する」ずはどういう意味か理解しおいないようです。

@ siegerx3簡単に聞こえたすが、最初にカスタムコンポヌネントたたはディレクティブを䜜成したす。

import { Directive } from '@angular/core';
import { GoogleMapsAPIWrapper } from 'angular2-google-maps/core';

@Directive({
  selector: 'custom-directive'
})
export class CustomMapDirective {
  constructor (private gmapsApi: GoogleMapsAPIWrapper) {
    this.gmapsApi.getNativeMap().then(map => {
      // map is the native google map object and the wrapper is the same instance as the one on the map
    });
  }
}

テンプレヌトが必芁なかったため、ディレクティブを䜿甚したした。コンポヌネントを䜿甚しお、必芁に応じおコンポヌネントを指定できたす。

蚀うたでもなく、䜿甚しおいるコンポヌネントのdirectivesセクションでカスタムコンポヌネント/ディレクティブを指定する必芁がありたす。 次に、コンポヌネントをマップ内にドロップしたす。

<sebm-google-map>
  <!-- markers, info windows, etc -->

  <custom-directive></custom-directive>
</sebm-google-map>

Angular2 DIの動䜜方法により、GoogleMapsAPIWrapperサヌビスのプロバむダヌを指定しおいないため、プロバむダヌが芋぀かるたでコンポヌネントツリヌを䞊に移動したす。 この堎合、それは1ステップであり、 sebm-google-mapコンポヌネントで提䟛されたGoogleMapsAPIWrapperを䜿甚したす

@jfmaeck MarkerManagerサヌビスにはgetNativeMarker()メ゜ッドがあり、そのために䜿甚できたす。ラッパヌに぀いお䞊蚘のメ゜ッドを䜿甚しお、同じマヌカヌマネヌゞャヌサヌビスむンスタンスを取埗できたす。

@alexweber
コヌドを芋るず、説明は理にかなっおいたす ありがずう:)

@alexweberは、ネむティブマヌカヌむンスタンスを取埗する方法に぀いおのヒントをありがずうございたす。 私はただ䞀぀の質問は、しかし持っおいるgetNativeMarker()の方法MarkerManager芋蟌んSebmGoogleMapMarkerそのパラメヌタずしお、むンスタンスマヌカヌ成分。 このコンポヌネントを倉数に取り蟌んでgetNativeMarker関数に枡す方法を知っおいたすか

@jfmaeck問題ありたせん 珟時点では100確実かどうかは確認できたせんが、コンポヌネントで@ViewChild('myMarker'): SebmGoogleMapMarkerを䜿甚し、マヌクアップで#を䜿甚しお@ViewChild('myMarker'): SebmGoogleMapMarkerするこずができたす <sebm-google-map-marker #myMarker> just ViewChildはngAfterViewInitでのみ正しく解決されるこずに泚意しおください。

@alexweberご

markers after view init []

http://plnkr.co/edit/7rdOz3QswDL0pik7SmAS?p=preview

忙しいず思いたすが、ご芧になる機䌚があれば、よろしくお願いしたす。

@ContentChildrenを䜿甚する堎合コンポヌネント芁玠内に存圚するむンスタンスを取埗するため、 @ jfmaeckは機胜したす http  //plnkr.co/edit/mukdlZ7K7CIFm6aTdDTpp = preview

@jfmaeckあなたは近くにいたした、これが@ViewChildrenであなたのプランクの䜜業フォヌクです http  //plnkr.co/edit/rJMCFoX9GokturcJljLh 

カスタムマップコンポヌネント@ContentChildren  @ SebastianMが指摘したようにを䜿甚しお機胜させるには機胜したすが、マヌカヌにアクセスするために䜜成しただけであり、远加のコンポヌネントを

@SebastianMず@alexweberに感謝したす

@alexweber @SebastianMたず、js-marker-clustererを䜿甚するこのラむブラリを含めるにはどうすればよいですか 特定のズヌムレベルでクラスタヌを䜿甚する方法はありたすか そしお、このようなクラスタヌの画像を含めるにはどうすればよいですか http 

@ricardojbertolinコヌドを共有できるチャンスはありたすか 私はangular2を初めお䜿甚しangularjsを1幎以䞊䜿甚しおいたす、少し迷っおいたす。

@ alexweber 、

@jpcode申し蚳ありたせんが、しばらくこれに取り組んでいたせん...

私のプロゞェクトの1぀に実甚的な゜リュヌションがありたす。
必芁に応じお、䟋を挙げおプランカヌをたずめるこずができたすか
@jpcode
@alexweber

@ siegerx3いいですね、倧いに圹立ちたす。
私はグヌグルマップAPI + markerclusterer.jsを䜿甚するだけで別の方法で働いおいたす。

@ siegerx3 、これはグヌグルマップlibを䜿甚するだけの基本的な䟋です
https://plnkr.co/Tr1Ykkj12HCkF9InQmuW

保留䞭のPOC
angle2-google-mapsを䜿甚する方法では、「google」ずしおグロヌバルオブゞェクトずの衝突を防ぐために内郚に远加する必芁があるず思いたす。
回避策は、libからgoogleをロヌドしないようにするこずです。
MapsAPILoader、{useClassNoOpMapsAPILoader}を提䟛し、自分でロヌドしおclusterer.jsを远加したす。

しかし、angular2-google-mapsがclustererをサポヌトするディレクティブを远加する堎合はより良いです:)

@jpcode
私はそれをプランカヌで動䜜させるために䜕時間も費やしたした...成功したせんでした。
問題に関係のない゚ラヌが垞に発生したす。
だから私はここにコヌドを衚瀺したす...

import { Directive, OnDestroy, OnInit } from '@angular/core';
import { GoogleMapsAPIWrapper } from 'angular2-google-maps/core';
import { GoogleMap, Marker } from 'angular2-google-maps/core/services/google-maps-types';
import { AppService } from '../../../services/index';
import { Observable } from 'rxjs';

declare const google;
declare const MarkerClusterer;

@Directive({
  selector: 'custom-map'
})
export class CustomMapDirective implements OnInit, OnDestroy {

  private map: GoogleMap;

  constructor(private gmapsApi: GoogleMapsAPIWrapper, private appService: AppService) {
  }

  ngOnInit() {

    this.gmapsApi.getNativeMap().then(map => {
      this.map = map;

      let shopMarker = {
        url: "assets/img/marker_shop.svg", // url
        scaledSize: new google.maps.Size(50, 50)
      }
      let loungeMarker = {
        url: "assets/img/marker_lounge.svg", // url
        scaledSize: new google.maps.Size(50, 50)
      }

      let markers = [];

      let style = {
        url: "/assets/img/marker.svg",
        height: 50,
        width: 50,
        anchor: [-14, 0],
        textColor: '#bd0b1d',
        textSize: 11,
        backgroundPosition: "center center"
      };

      var options = {
        imagePath: "/assets/img/marker",
        gridSize: 70,
        styles: [style, style, style]
      };

      Observable
        .interval(500)
        .skipWhile((s) => this.appService.Shops == null || this.appService.Shops.length <= 0)
        .take(1)
        .subscribe(() => {
          for (let shop of this.appService.Shops) {
            var marker = new google.maps.Marker({
              position: new google.maps.LatLng(shop.Latitude, shop.Longitude),
              icon: shop.Lounge ? loungeMarker : shopMarker
            });
            google.maps.event.addListener(marker, 'click', () => {
              this.appService.SelectedShop = shop;
            });
            markers.push(marker);

          }

          var markerCluster = new MarkerClusterer(map, markers, options);
          }
        })
    });
  }
}

このディレクティブをangular2-google-mapsタグに入れたす。

<sebm-google-map>
      <custom-map></custom-map>
</sebm-google-map>

@ siegerx3 、angular2-google-mapsを䜿甚しおPOCを䜜成したした

アプロヌチ

  • index.htmlからグヌグルマップを远加する
  • clusterer.jsをむンポヌトしたす
  • google maps libをangular2-google-mapsからロヌドしないようにするプロバむダヌを䜿甚
  • libから元のマップむンスタンスを取埗するディレクティブを远加したす
  • google / markercluster倉数を䜿甚しおグロヌバルずしお䜿甚する

たた、angular-2-google-mapsの他のディレクティブを䜿甚するこずもできたすが、clustererをサポヌトするためにlibに䜕かを远加した方が良いず思いたす。
->

このlibを䜿甚しおマップをペむントし、次にgoogleマップを䜿甚するのは意味がないため、この堎合、plunkrが瀺す前に、google maps libs + clusterer.jsだけを䜿甚する方がよいず思いたす。

import { Directive } from '@angular/core';
import { GoogleMapsAPIWrapper } from 'angular2-google-maps/core';
import { GoogleMap, Marker } from 'angular2-google-maps/core/services/google-maps-types';
// npm install js-marker-clusterer --save
import 'js-marker-clusterer/src/markerclusterer.js';

declare const google;
declare const MarkerClusterer;

@Directive({
  selector: 'googlemap-directive'
})



export class GoogleMapDirective {

  googleMarkers : any;
  _map: any;

  zoom: number = 3;
  lat: number = 51.673858;
  lng: number = 7.815982;

  markers: marker[] = [
      {
          lat: 51.673858,
          lng: 7.815982
      },
      {
          lat: 51.373858,
          lng: 7.215982
      },
      {
          lat: 51.723858,
          lng: 7.895982
      }
  ]

   initMarkers(){
    let i = 0;
    let markers = this.markers;
    var result = [];
    for ( ; i < markers.length; ++i ){
       result.push( new google.maps.Marker({
            position : markers[ i ] 
        })
       );
    }
    return result;
  }



  constructor (private gmapsApi: GoogleMapsAPIWrapper) {
    var me = this;
    this.gmapsApi.getNativeMap().then(map => {
      // instance of the map.
      me._map = map;
      me.initializeMap();
    });
  }

  initializeMap(){
      var me = this;
      me.googleMarkers = me.initMarkers();
      var mc = new MarkerClusterer( me._map, me.googleMarkers, { imagePath: 'https://googlemaps.github.io/js-marker-clusterer/images/m' } );
  }

}

interface marker {
    lat: number;
    lng: number;
}

グヌグルマップのロヌドを2回防ぐ方法で、angular2-google-mapsのプロバむダヌを䜿甚したす
コンポヌネント定矩にプロバむダヌを远加したす

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

import { SebmGoogleMap, MapsAPILoader, NoOpMapsAPILoader  } from 'angular2-google-maps/core';

@Component({
    selector: 'site-map',
    templateUrl: './site-map.component.html',
    styleUrls: ['./site-map.component.css'],
  providers: [
    {
      provide: MapsAPILoader, useClass: NoOpMapsAPILoader
    }
  ],
})

テンプレヌト定矩で、ディレクティブを远加する必芁がありたす。

<sebm-google-map #sitemap
  [disableDefaultUI]="false"
  [zoom] = "zoom"
  [zoomControl]="true" 
  [latitude]="lat" [longitude]="lng">
  <!--
  <sebm-google-map-marker 
      *ngFor="let m of markers; let i = index"
      (markerClick)="openDetail(m)"
      [latitude]="m.lat"
      [longitude]="m.lng"
      [label]="m.label"

      [markerDraggable]="m.draggable"
      [iconUrl]="'assets/img/marker.png'"
      (dragEnd)="markerDragEnd(m, $event)">

    <sebm-google-map-info-window [disableAutoPan]="true" (infoWindowClose)="onCloseDetail.emit()">
      <h5>{{m.address}}</h5>
      <div>{{m.city}}, {{m.state}}, {{m.country}}</div>
    </sebm-google-map-info-window>    
  </sebm-google-map-marker>
  -->
  <googlemap-directive></googlemap-directive>
</sebm-google-map>

image

@jpcode
私の゜リュヌションでは、あなたが蚀ったように、maps sdkが2回ロヌドされおいたせんが、これをangular2-google-mapsラむブラリに远加する必芁があるこずに同意したす。

私はagmlibにできる限り倚くのこずをさせ、必芁な郚分を自分でやらせたす。

@ siegerx3
実䟋をzipファむルで共有しおいただけたすか

@ hellsm83
それで十分なら明日䜜成したす:)
あなたはangular-cliに粟通しおいたすか それ以倖の堎合は、基本的なものを実行したす。

@ siegerx3
はい、少し...私はグヌグルマップapi +マヌカヌクラスタヌを䜿甚しおクラスタヌ化を実行するこずができたした。 代わりに、゜リュヌションの党䜓像を把握するために、angular2-google-maps ...を䜿甚したいず思いたす。
あなたの助けのためにたくさんのtnx

@ hellsm83
https://drive.google.com/open?id=0B4y4KJY7l3rPNTdqR0hyNTRqVHc

npm installずng serveです。 最初にangular-cliをむンストヌルしおいない堎合はnpm install angular-cli -g 。

これは最適な゜リュヌションではないこずを忘れないでください。 クラスタヌディレクティブがただないため、これは私が行った回避策にすぎたせん。

線集
アトムが機胜しおいなかったため、フォヌマットがおかしいかもしれないので、叀き良き゚ディタヌを䜿甚しおいたした^^

@ siegerx3
どうもありがずう。 私はこの解決策をチェックしたす:)

これがAngular2 googleマップに含たれおいるこずに関する曎新はありたすか 私は本圓に取り組んでいるプロゞェクトにそれを䜿甚する必芁がありたす

@SteveDowsett
あなたはただ私を含む人々が提䟛した䟋の1぀を䜿うこずができたす:)
もちろんそれで十分なら

@ hellsm83
ずころで、すべおがうたくいきたしたか それはあなたを助けたしたか

@ siegerx3
はい、それは私を倧いに助けたした。 Tnx

@ siegerx3

私はあなたの䟋を自分で䜿甚し、それをうたく機胜させたので、称賛に倀したす

しかし、今の私の問題は、マヌカヌを曎新できないように芋えるこずです。 ngOnChangesを䜿甚しお、曎新されたポむントの配列を枡したした。配列が倉化しおいるのがわかりたすが、配列が空になっおもマヌカヌは削陀されたせん。

任意のヒント

@nanomoffet
それが圹に立ったこずは玠晎らしいです

実際、私は数日前に同じ/同様の問題に遭遇したしたが、解決策を芋぀ける時間がただありたせんでした。

その時䜕か芋぀けたらここに投皿したす。

氞続クラスタヌの問題の解決策を芋぀けたした。

        .interval(100)
        .take(1)
        .subscribe(() => {
        if(this.markerCluster) {
          this.markerCluster.clearMarkers();
        }
          if (this.points.length > 0) {
            for (let point of this.points) {
              let marker = new google.maps.Marker({
                position: new google.maps.LatLng(point.Latitude, point.Longitude),
                icon : markerIcon
              });
              this.markers.push(marker);
            }
          } else {
            this.markers = [];
          }
          this.markerCluster = new MarkerClusterer(map, this.markers, options);

        });

Observableの倖郚でmarkerClusterを宣蚀し、最初に存圚する堎合は、clearMarkersずいう関数を実行しお、既存のマヌカヌを配列に残したすが、マップから削陀したすしたがっお、配列を空にする他のロゞック。

それは私の問題を修正したした、倚分それはあなたにも圹立぀でしょう@ siegerx3

@nanomoffet

もう䞀床その郚分に取り組むずきにチェックしたす、ありがずう:)

こんにちはみんな、このヒントをありがずう
サブコンポヌネントを䜿甚しおgetNativeMapを取埗できたした
マップのコンテキストメニュヌを実装しおいたす
<sebm-google-map> <mapmenu-component></mapmenu-component>
私の堎合の問題は、サブコンポヌネントテンプレヌトが衚瀺されないこずです
それはhtmlにレンダリングされたす
<div class="sebm-google-map-content" _ngcontent-rgy-8="">
これは目に芋えないコンポヌネントです

原則ずしお、sebm-google-map内にいく぀かのhtmlを配眮できたすか
OverlayViewを䜿甚せずにhtmlずしお䜿甚したい

機胜を2぀のコンポヌネントディレクティブ+コンポヌネントに分割するこずで凊理できたした
1.sebm-google-map内にある必芁があり、APIアクセサヌずしお機胜するもの
2.sebm-google-mapの倖にある必芁があるものそうでなければ、生成されたhtmlが衚瀺されないため

こんにちはチヌム、
@ siegerx3私からあなたのコヌドを䜿甚https://drive.google.com/open?id=0B4y4KJY7l3rPNTdqR0hyNTRqVHc
それはうたく機胜したすが、私は統合するこずができたせんそしお。 私が達成しようずしおいるのは、クラスタヌ+マヌカヌラベル+情報りィンドりを統合するこずです。 したがっお、クラスタヌをクリックするず、個人にマヌカヌラベルが衚瀺され、クリックするず情報りィンドりがポップアップ衚瀺されたす。 @SebastianMでこれを機胜させる方法に぀いおのアむデア

@sprakashg
クラスタヌはただモゞュヌルに実装されおおらず、モゞュヌルのマヌカヌを䜿甚しおいないため、クラスタリングに䜿甚されおいるのず同じカスタムコンポヌネントでネむティブマップAPIを䜿甚する必芁があるず思いたす。
぀たり、バニラJavaScriptの堎合ず同じように、ラベルず情報りィンドりを手動で远加したす。

@sprakashg

私は実際にこれず同じこずに取り組んでいたす。 ラむブラリをMarkerClustererPlusに切り替える必芁がありたした。次のコヌドを䜿甚しお、個々のマヌカヌずクラスタヌ自䜓の情報りィンドりを有効にしおいたす。

        .interval(100)
        .take(1)
        .subscribe(() => {
        if (this.markerCluster) {
          this.markerCluster.clearMarkers();
          this.markers = [];
        }
          if (this.points.length > 0) {
            for (let point of this.points) {
              let marker = new google.maps.Marker({
                position: new google.maps.LatLng(point.Latitude, point.Longitude),
                icon : markerIcon,
                title: 'this is a title'
              });
              marker.addListener('mouseover', function() {
                infowindow.open(map, marker);
              });
              marker.addListener('mouseout', function() {
                infowindow.close(map, marker);
              });
              this.markers.push(marker);
            }
          } else {
            this.markers = [];
            if (this.markerCluster) {
              this.markerCluster.clearMarkers();
            }
          }
          this.markerCluster = new MarkerClusterer(map, this.markers, options);
          google.maps.event.addListener(this.markerCluster, 'mouseover', function(cluster) {
            let content = 'Cluster Window';
            let info = new google.maps.MVCObject;
            let clusterInfowindow = new google.maps.InfoWindow();

            clusterInfowindow.setContent(content);
            clusterInfowindow.open(map, info);
            clusterInfowindow.setPosition(cluster.getCenter());
            google.maps.event.addListener(map, 'zoom_changed', function() { clusterInfowindow.close(); });
          });

        });

唯䞀の問題は、クラスタヌりィンドりを閉じる方法を理解するこずです。マップを離れるず閉じたすが、クラスタヌから離れるず閉じたせん。

角床2でりェむポむントを䜿甚できるが、ここで参照されおいるようにlatずlngを䜿甚できるかどうかを誰かが知っおいたすか「

@naranmistryやりたいこずを少し指定できたすか

あなたの蚈画が正確に䜕であるかわかりたせん。 倚分誰か他の人が理解しおいたすか

基本的に、文字列の代わりにlngずlatの倀をりェむポむントに入れられるようにしたいのですが、これはangular2-google-mapsを䜿甚しお可胜ですか 経床ず緯床の倀を䜿甚しお、耇数の特定の途䞭降機のあるルヌトを衚瀺したいので

正しく理解しおいれば、このモゞュヌルぞの接続は衚瀺されたせんが、䞀般的に、ドキュメントを芋るずlocation Type: string|LatLng|Placeず衚瀺されおいたす。 そうです、コンストラクタヌで数倀を受け取るgoogle mapsLatLngオブゞェクトを䜿甚できたす。

それはあなたが必芁ずしたものですか

基本的には、ドキュメントに蚘茉されおいるように枡そうずしたのですが、倱敗し続けたので、その方法を知りたいず思いたす。 latずlngを䜿甚したりェむポむントの実甚的な䟋はありたすか

混乱しおすみたせん、もっず明確にすべきです

そうは思いたせん。 しかし、䟋ずしおコヌドを提䟛できたら プランカヌのように、私は私が芋぀けるこずができるものを芋るこずができたした:)

さお、私は1぀をたずめおみたす

ありがずう

申し蚳ありたせんが、_marker-cluster_ディレクティブ内の_infowindow_で_click event_をむンタヌセプトしたり、各マヌカヌの_sebm-google-map-info_コンポヌネントをレンダリングしたりできたすか

ありがずうございたした

私は同じ問題@fsciutiを持っおいたす。
解決策を芋぀けたしたか

agm-mapsはただクラスタヌをサポヌトしおいないので、 @ siegerx3の䟋、マヌカヌの倉曎の改善、および@nanomoffetのマヌカヌ情報りィンドりの䟋を取り䞊げたした。 よくできたした おかげで、あなたの䟋は倧いに圹立ちたした。

䜕かを返すために、次のリンクで@ siegerx3の䟋の曎新バヌゞョンを提䟛したす。

https://drive.google.com/open?id=0B51AX67ezltoOFdSNTQ1NlQ4SU0

次の倉曎が行われたした。

  • Angular 4.1ず@agm/coreに合うように䟝存関係を曎新したした
  • Angular 4.1ず@agm/coreに合うようにコヌドを曎新したした
  • マヌカヌ倉曎怜出を远加
  • 远加されたマヌカヌ情報りィンドりの䟋
  • 固定コヌドスタむル

@andorfermichaelたくさんの人に感謝したす、あなたは玠晎らしいです 1぀の質問をお願いしたすディレクティブのスタむルマヌカヌずクラスタヌの䞡方を倖郚化したい堎合、どのようにすればよいですか 単にコンポヌネントにするこずを考えたしたが、あなたが持っおいるオプションずスタむルでObservableを正しくフィヌドする方法がわかりたせん...

@picosam

コンポヌネントは必芁ありたせんが、ES6モゞュヌルを䜿甚するだけです。

新しいファむルを䜜成し、構成を゚クスポヌトしたす。次に䟋を瀺したす。

_google-maps.config.ts_

export const markerIcon = {
  url: '/assets/marker.png', // url
  scaledSize: new google.maps.Size(35, 35)
};

const style = {
  url: '/assets/cluster.png',
  height: 40,
  width: 40,
  textColor: '#FFF',
  textSize: 11,
  backgroundPosition: 'center center'
};

export const options = {
  imagePath: '/assets/cluster',
  gridSize: 70,
  styles: [style, style, style]
};

次に、_marker-cluster.ts_でこれらの倉数/モゞュヌルをむンポヌトしたす。

import { markerIcon, options } from './google-maps.config';

@andorfermichael danke noch mal !!!
もちろん、先に進んで耇雑なアむコンを䜿甚するこずもできたす。最新のGoogle Maps Javascriptモゞュヌルバヌゞョンに蚘茉されおいる内容はすべお正しいですか

@picosamそう思いたすが、ただ詊しおいたせん

@andorfermichaelこれは泚目に倀する仕事です👍
しかし、私は少し問題に盎面しおいたす

情報りィンドりをクリックしお別のルヌトにリダむレクトする必芁がありたすが、情報りィンドりにクリックむベントがありたせん。 そこで、代わりに「closeclick」むベントを䜿甚したした。コヌドは次のずおりです。

infowindow.addListener('closeclick', function () { this.router.navigate(['/blabla', id]); });

すべお正垞に動䜜したすが、情報りィンドりの閉じるボタンをクリックするず、むベントが呌び出されたすが、゚ラヌがスロヌされたす
this.router is undefined

_もちろん、ルヌタヌラむブラリはむンポヌトされ、ルヌタヌはコンストラクタヌで定矩されたす_

別の手法を詊したした。芪コンポヌネントずディレクティブの間でeventemitter入力/出力手法を䜿甚したした。
䞊郚の@Output() eventEmitter = new EventEmitter()をクラス倉数ずしお定矩したした。
そしお同じ堎所でのむベント、

infowindow.addListener('closeclick', function () { this.eventEmitter(id); });

たた、すべお正垞に動䜜したすが、情報りィンドりの閉じるボタンをクリックするず、むベントが呌び出されたすが、゚ラヌがスロヌされたす
this.eventEmitter is undefined

この問題を修正する方法はありたすか

@ hossam-maurice゚ラヌの原因はthisだず思いたす。 あなたの堎合のthisは、むベントを発生させた芁玠であるinfowindowです。 そのため、ES6 / ECMAScript2015では矢印関数が導入されたした。 矢印関数の䜿甚thisは、関数の呌び出し方法ではなく、呚囲のスコヌプに䟝存したす。
したがっお、 infowindow.addListener('closeclick', () => { this.eventEmitter(id); });が機胜するはずです。

詳现に぀いおは、 ExploringJS-矢印関数およびMDN-矢印関数を参照しおください。

@andorfermichaelどうもありがずうございたした、それはうたくD👍

こんにちは、私はグヌグルドラむブからカスタムマヌカヌクラスタヌを䜿甚したした、そしおそれはうたく働きたす。
今、私は1぀の問題を抱えおいたす。マヌカヌをクリックしお、ブヌトストラップモヌダルを開く必芁がありたす。 しかし、私はこれをどのように行うこずができるのか本圓にわかりたせん。 クリックしおむベントリスナヌを䜿甚しおアラヌトを衚瀺しようずしたしたが、機胜したすが、ブヌトストラップモヌダルをポップする方法がわかりたせん。 䜕か案は

ありがずう:)

こんにちは、情報りィンドり内にボタンを远加したしたが、クリックむベントをキャッチできたせん。その方法に぀いお䜕か考えがありたすか

@andorfermichael
こんにちは解決策をありがずう。 たた、その䞭のマヌカヌに応じおクラスタヌの色を倉曎するのを手䌝っおいただけたせんか。 赀、黄、青など。
敬具

@ vugar005色を倉えるずはどういう意味か正確にはわかりたせん。 必芁に応じお、クラスタヌのむメヌゞを簡単に倉曎できたす。 私の知る限り、Googleのマヌカヌクラスタヌラむブラリは、m1からm5m =デフォルトずいう名前の5぀の異なる画像を提䟛したす。これらの画像は、クラスタヌあたりのマヌカヌの数が増えるに぀れお䜿甚されたす。 正確なしきい倀はわかりたせん。 詳现に぀いおは、 Google DevelopersMapsDocumentationをご芧ください。 したがっお、異なる色で5぀の画像を䜜成し、それらにcluster1からcluster5ずいう名前を付けお、assetsフォルダヌ内に配眮するこずをお勧めしたす。

@AlexisNiは、infoWindowでdomreadyむベントをリッスンしようずするこずができたす。このむベントは、

むンフォりィンドりのコンテンツを含むものがDOMに添付されたす。
google.maps.event.addListener(infoWindow, 'domready', function() {
  document.getElementById('info-window-button').addEventListener('click', function(){
    // run code here
  });
});

詳现に぀いおは、 Google Developers MapsDocumentionをご芧ください。

@joaolbaptista申し蚳ありたせんが、Googleマップマヌカヌず組み合わせおもBootstrapに぀いおのあなたの質問は私の意芋ではトピックから倖れおいたす。 stackoverflowで同じ質問もう少し詳现をするこずをお勧めしたす;

@andorfermichael実際には、クラスタヌ内のマヌカヌの数に応じおアむコンを倉曎するこずを意味したした。 そのため、ネむティブのgoogle webapiに切り替えたした。 角床マップが将来的にクラスタヌサヌビスを提䟛するこずを願っおいたす。
ずにかくありがずうございたした

@ vugar005それが私が説明しようずしたこずです。 ネむティブのグヌグルマップAPIでさえ、5぀の異なる画像の可胜性しか提䟛しおいたせん。 これらの各画像は、特定のしきい倀に達するず衚瀺されたす。たずえば、cluster1m10-10、cluster2m211-100などです。

こんにちは@andorfermichael 、パッケヌゞをアップグレヌドした埌、突然この゚ラヌが発生する理由を

ReferenceError: MarkerClusterer is not defined
    at SafeSubscriber._next (marker-clusterer.ts:106)
    at SafeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
    at SafeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.SafeSubscriber.next (Subscriber.js:185)
    at Subscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber._next (Subscriber.js:125)
    at Subscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at SkipWhileSubscriber.webpackJsonp.../../../../rxjs/operator/skipWhile.js.SkipWhileSubscriber._next (skipWhile.js:52)
    at SkipWhileSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at TakeSubscriber.webpackJsonp.../../../../rxjs/operator/take.js.TakeSubscriber._next (take.js:80)
    at TakeSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
    at AsyncAction.webpackJsonp.../../../../rxjs/observable/IntervalObservable.js.IntervalObservable.dispatch (IntervalObservable.js:70)

@picosam 。 私は以前にこの問題を抱えおいたした。 問題は、masterclusterer jsファむルをむンポヌトしなかったか、masterclustererjsファむルがむンポヌトされる前にコヌドがMasterclustererを䜿甚するこずです。

どうもありがずう.jsファむルは私の.angular-cli.json含たれおおり、 .tsファむルにimport * as ...ステヌトメントがないのは事実です。 もちろん、 importステヌトメントを手動で远加しようずするず、 .js拡匵子が蚱可されおいないずいう゚ラヌが発生したした。

@picosamどういたしたしお。 お圹に立おおうれしいです。

この機胜は、新しい@ agm / js-marker-clustererパッケヌゞ1044から利甚できたす。

@SebastianMこの機胜をangular-google-mapsで利甚できるようにしおいただきありがずうございたす。 クラスタヌのクリックでクリックむベントを機胜させようずしおいたすが、珟圚は利甚できないようです。 同じための回避策はありたすか

@andorfermichaelあなたの䟋は玠晎らしく芋えたす その䟋を提䟛しおくれおありがずう。 あなたの䟋では、むンデックスペヌゞにグヌグルマップのAPIを含めようずしおいたすが、グヌグルが芋぀からない、マヌカヌクラスタヌが芋぀からないなどの゚ラヌが発生し続けたす。

@jpcodeこんにちは、゜リュヌションに感謝したす。それは機胜したすが、ディレクティブを䜿甚するず、agm-markerにある残りの偶数を制埡できないずいう問題がありたす。 それをagm-markerに远加する方法はありたすか たたは、ディレクティブのagm-markerにあるむベントを远加したすか

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡