Cordova 爱奥尼亚2谷歌地图标记点击事件
我正试图用这段代码从数据库中获取所有标记。但问题是,当我单击标记时,我总是从数据库中获取最后一项。当“alert(record.id);”弹出时,它总是显示每个标记的最后一项。我想在单击每个标记时显示它们的idCordova 爱奥尼亚2谷歌地图标记点击事件,cordova,google-maps,ionic-framework,ionic2,Cordova,Google Maps,Ionic Framework,Ionic2,我正试图用这段代码从数据库中获取所有标记。但问题是,当我单击标记时,我总是从数据库中获取最后一项。当“alert(record.id);”弹出时,它总是显示每个标记的最后一项。我想在单击每个标记时显示它们的id loadMarker(){ this.service.getMaps() .subscribe( data1 => { let loc = data1; for (var i = 0; i < data1.length;
loadMarker(){
this.service.getMaps()
.subscribe( data1 => {
let loc = data1;
for (var i = 0; i < data1.length; i++) {
var record = data1[i];
let latlng = new GoogleMapsLatLng(record.lat, record.lng);
let markerOptions: GoogleMapsMarkerOptions = {
'position': latlng,
'title': record.title,
'animation': GoogleMapsAnimation.DROP
};
this.map.addMarker(markerOptions).then((marker: GoogleMapsMarker) => {
marker.addEventListener(GoogleMapsEvent.MARKER_CLICK)
.subscribe(() => {
alert(record.id);
});
});
}
loadMarker(){
this.service.getMaps()
.订阅(数据1=>{
设loc=data1;
对于(变量i=0;i{
marker.addEventListener(GoogleMapsEvent.marker_单击)
.订阅(()=>{
警报(record.id);
});
});
}
订阅事件是异步的。您将无法从for循环获取record.id。
但您可以在subscribe中访问markerOptions数据
对于仍有此问题的人
this.map
.addMarker({
title: title,
index: index,
icon: {
size: {
height: 48,
width: 30
},
url: pinUri
},
position: {
lat: latitude,
lng: longuitud
}
})
.then(marker => {
marker
.on(GoogleMapsEvent.MARKER_CLICK)
.subscribe((selectedMarker: any) => {
const mark = selectedMarker[1];
this.showModal(mark.get('index'), true);
});
});
this.map
.addMarker({
title: title,
index: index,
icon: {
size: {
height: 48,
width: 30
},
url: pinUri
},
position: {
lat: latitude,
lng: longuitud
}
})
.then(marker => {
marker
.on(GoogleMapsEvent.MARKER_CLICK)
.subscribe((selectedMarker: any) => {
const mark = selectedMarker[1];
this.showModal(mark.get('index'), true);
});
});