2017-07-27 33 views
-1

我想在简单的谷歌地图上得到几个标记。我使用的离子3,使用角4.谷歌地图上的多个标记与离子3

我加载地图是这样的:

import { Component, ViewChild, ElementRef } from '@angular/core'; 
import { GoogleMaps } from '@ionic-native/google-maps'; 

declare var google; 

export class SearchResultsPage extends BasePage { 

@ViewChild('map') mapElement: ElementRef; 
private map: any; 

constructor(public navCtrl: NavController, 
      public navParams: NavParams, 
      private translateService: TranslateService, 
      private googleMaps: GoogleMaps) {} 


    ionViewDidLoad() { 
    setTimeout(()=>{ 
     this.loadMap(); 
    }, 1000) 
    } 

    loadMap() { 
    let latLng = new google.maps.LatLng(48.8509695, 2.3861870000000636); 
    let latLng2 = new google.maps.LatLng(48.8504541, 2.3865487000000485); 

    let mapOptions = { 
     center: latLng, 
     zoom: 15, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

    this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions);  

    var marker = new google.maps.Marker({  
     position: latLng, 
     map: this.map, 
     title: 'Hello World!' 
    },{ 
     position: latLng2, 
     map: this.map, 
     title: 'Check the World!' 
    }); 
} 

我发现这个(但不工作)

addMarkers(data, callback) { 
    var markers = [{ 
     'position': { 
      lat: 48.8513735, 
      lng: 2.3861292 
     }, 
     'icon': '#ff0000' 
     }]; 
    function onMarkerAdded(marker) { 
     console.log(marker); 
     markers.push(marker); 

     if (markers.length === data.length) { 
      callback(markers); 
     } else { 
      console.log('in the else'); 
     } 
    } 

    data.forEach(function(markerOptions) { 
     console.log('in foreach'); 
     this.map.addMarker(markerOptions, onMarkerAdded); 
    }); 
} 

地图正在显示,但我没有成功添加标记。
我试图遵循官方文档(v1和v2),但它不起作用。如果有人有想法,请提前致谢。我看到很多人试图做同样的事情,但每个代码都是不同的。

+0

什么问题?地图不显示或者您不能添加标记?如果地图不显示您是否为包含地图的div设置了适当的样式? – eNVy

+0

对不起,我编辑了我的问题。地图正在显示,但我无法成功显示标记 –

+1

您附加的代码没有任何内容可以加载标记。你能不能添加这个,所以我们可以看到发生了什么。 – eNVy

回答

1
loadMap() { 
let latLng = new google.maps.LatLng(48.8513735, 2.3861292); 

let mapOptions = { 
    center: latLng, 
    zoom: 15, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
} 

this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions);  

var locations = [ 
    ['Bondi Beach', -33.890542, 151.274856, 4], 
    ['Coogee Beach', -33.923036, 151.259052, 5], 
    ['Cronulla Beach', -34.028249, 151.157507, 3], 
    ['Manly Beach', -33.80010128657071, 151.28747820854187, 2], 
    ['Maroubra Beach', -33.950198, 151.259302, 1] 
]; 

var infowindow = new google.maps.InfoWindow(); 

var marker, i; 

for (i = 0; i < locations.length; i++) { 
    marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
    map: map 
    }); 

    google.maps.event.addListener(marker, 'click', (function(marker, i) { 
    return function() { 
     infowindow.setContent(locations[i][0]); 
     infowindow.open(map, marker); 
    } 
    })(marker, i)); 
} 
} 
+0

感谢您的回答。它完美的工作,但是当我添加另一个标记时,它似乎并不存在。这两个标记应该在同一条街上。我将更新代码以向您展示我是如何做到的。 –

+0

您无法在单次调用中创建多个标记。查看示例代码的这个答案来创建多个标记。如果它对你有帮助,请将我的答案标记为答案。谢谢。 https://stackoverflow.com/questions/3059044/google-maps-js-api-v3-simple-multiple-marker-example – eNVy

+0

我已更新答案,以便可以添加多个标记。 – eNVy