2016-03-09 26 views
5

Uso Angular 2 e devo lavorare con Google Map. Devo inizializzare una mappa, creare alcuni array con le coordinate del percorso, aggiungere un Custom HTML Marker, aggiungere alcuni listerer di eventi, disegnare una polilinea, ecc. Tutti questi possono essere fatti con il JS nativo sulla pagina web. Nel mio lavoro ho bisogno di usare Angular2. Come posso avviare un oggetto mappa all'interno del componente e manipolarlo all'interno di un componente come con un oggetto?Angular 2 e API di Google Maps. Manipolare l'oggetto della mappa dal componente

C'è una libreria angular2-google-maps, ma ha funzionalità limitate. Per esempio non riesco a creare una polilinea con angular2-google-maps, non riesco a integrare alcune delle librerie, per esempio HTML personalizzato Marker, cSnapToRoute, ecc

risposta

-2

Si può rendere semplice script JS che caricherete sulla pagina senza angolare. È possibile init GMaps in questo modo:

var mapData; 
    container.gmap(
    { 
     'zoomControl': true, 
     'zoomControlOptions': { 
      'style': google.maps.ZoomControlStyle.SMALL, 
      'position': google.maps.ControlPosition[ options.mapZoomPosition ] 
     }, 
     'panControl': false, 
     'streetViewControl': false, 
     'mapTypeControl': false, 
     'overviewMapControl': false, 
     'scrollwheel': false, 
     'draggable': options.draggable, 
     'mapTypeId': google.maps.MapTypeId[ options.mapType ], 
     'zoom': options.mapZoom, 
     'styles': styles[ options.mapStyle ] 
    }) 
    .bind('init', function() { 

     mapData = { 
      container: container, 
      map: map, 
      options: options, 
      addMarker: addMarker, 
      library: library, 
      iw: { 
       data: infoWindowData, 
       window: infoWindow, 
       content: infoWindowContent, 
       open: infoWindowOpen, 
       close: infoWindowClose 
      } 
     }; 
} 

E si può quindi innescare evento quando GMaps terminerà l'inizializzazione:

google.maps.event.addListenerOnce(map, 'idle', function() { 

$(document).trigger('map.init', mapData); 

}); 

E poi si può prendere in angolare:

var mapData; 
$(document).on('map.init', function (event,data) { 
    mapData = data; 
}); 

E quindi puoi usarlo normalmente, impostando lo zoom ad esempio:

mapData.map.setZoom(50); 
+1

Uso angolare ver. 2 e io uso i componenti. Puoi mostrarmi un pezzo di codice come posso usare un oggetto GMap all'interno del componente? – Edward

+0

Non è possibile utilizzarlo in modo angolare senza hack. Il miglior approccio che ho visto è questo: È necessario creare puro script JS e caricarlo sulla pagina come negli esempi di Google. Dopo aver inizializzato la mappa, è necessario generare un evento da questo script JS e passare ** mapObject ** e gestirlo in modo angolare utilizzando JQuery. E quindi utilizzare questo mapObject in angolare, non importa 1 o 2. – alexey

Problemi correlati