मैं Google Map InfoWindow
से Info Page
से डेटा पास करने का प्रयास कर रहा हूं। मैं डेटा पास और एक्सेस करने में सक्षम हूं। हालांकि, हर बार जब जानकारीविंडो फिर से खोल दिया जा रहा है, तो पृष्ठ i+1
को आग लगा देगा, एक-दूसरे को ओवरले कर देगा।आयनिक 2/कोणीय 2 - Google मानचित्र से डेटा पास करने में विफलता InfoWindow पृष्ठ
उदाहरण के लिए पहली बार InfoWindow खोला गया, Apply button
क्लिक किया गया, यह Info Page
पर जाएगा। InfoWindow को बंद करना और इसे फिर से खोलना, Apply button
पर दोबारा क्लिक करें, यह Info Page
दो बार खुल जाएगा और प्रक्रिया को दोहराने पर 1 से बढ़ोतरी करेगा।
प्रक्रिया:
मानचित्र -> मार्कर बनाया ->content
चर सेट -> infoWindow खोलने के लिए infoWindow- बनाने> मार्कर सेट क्लिक किया जब -> infoWindow पर APPLY
क्लिक करें - -> infoWindow सामग्री के साथ प्रदर्शित> प्रत्यक्ष करने के लिए InfoPage
ONCE -> बंद जानकारी -> जानकारी के साथ मानचित्र पर वापस जाएंविंडो और सामग्री खोला गया। (Apply
पर क्लिक करें InfoPage
पर फिर से ONCE) ->नज़दीकी जानकारीविंडो -> मार्कर -> infoWindow पर क्लिक करें। -> सूचना विंडो में "APPLY
" पर क्लिक करें-> "InfoPage" पर सीधे TWICE -> पहले InfoPage
पर वापस जाएं -> जानकारी के साथ मानचित्र पर वापस जाएं विन्डो -> बंद जानकारी विंडो, मार्कर के साथ मानचित्र दिखाएं। -> मार्कर दोहराने पर क्लिक करें, InfoPage
तीन बार दिखाई दें।
असल में हर बार InfoWindow
बंद होने और फिर से खोलने के बाद, InfoPage
increment by 1
होगा।
जो मैंने देखा console.log
यह है कि यह InfoWindow
को फिर से खोलने पर एक और सरणी बनाएगा क्योंकि click eventlistener
ट्रिगर किया गया है। मैंने oneTime
फ़ंक्शन का उपयोग करने की कोशिश की थी, एक बार ईवेंट चलाया था, और अन्य विधियां लेकिन सभी असफल रहे।
समस्या पर टिप्पणी करने के लिए स्वतंत्र महसूस करें। किसी भी सुझाव की सराहना की जाती है। अग्रिम में :)
GoogleMapProvider.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import { App } from 'ionic-angular';
constructor(
public http: Http,
public app:App,
) {
}
addMarker(lat: any, lng: any , listingID:any): void {
let latLng = new google.maps.LatLng(lat, lng);
let marker = new google.maps.Marker({
map: this.map,
animation: google.maps.Animation.DROP,
position: latLng,
});
this.markers.push(marker);
this.addInfoWindow(marker,listingID);
}
addInfoWindow(marker,listingID){
this.http.get('http://localhost/infoWindow.php?id=' + listingID)
.map(res => res.json())
.subscribe(Idata => {
let infoData = Idata;
let content = "<ion-item>" +
"<h2 style='color:red;'>" + infoData['0'].ListingTitle + "</h2>" +
"<p>" + infoData['0'].ListingDatePosted + ' ' + infoData['0'].ListingTime + "</p>" +
'<p id="' + infoData['0'].ListingID + '">Apply</p>'
"</ion-item>";
let infoWindow = new google.maps.InfoWindow({
content: content
});
google.maps.event.addListener(infoWindow, 'domready',() => {
let goInfoPage = document.getElementById(infoData['0'].ListingID);
goInfoPage.addEventListener('click',() => {
let pushData = infoData['0'];
let nav = this.app.getActiveNav();
nav.push('InfoPage',{'record':pushData});
})
});
google.maps.event.addListener(marker, 'click',() => {
infoWindow.open(this.map, marker);
});
});
}
Info.ts धन्यवाद
ionViewDidLoad()
{
this.selectEntry(this.NP.get("record")); //getting the record
}
का उपयोग करके हल करने के लिए आप घटना श्रोता हटा रहे हैं कहीं भी सेवा मेरे?। अगर आपको लगता है कि आप खुद को स्मृति रिसाव के लिए खुले छोड़ते हैं .. इसके अलावा आयनिक जीवन चक्र में आपकी विधियां क्यों आ रही हैं? मुझे लगता है कि यह कोड का केवल एक हिस्सा है। – JGFMK
हां। यह ऊपर वर्णित समस्या को छोड़कर काम करता है। मैंने ईवेंट श्रोताओं को हटाया नहीं है। मैंने कोशिश की कि जानकारी-विंडो पर क्लिक किया जा रहा है लेकिन परिणाम अभी भी वही है। InfoWindow बंद होने के बाद यह फिर से फिर से खोलने के बाद डेटा की एक और पंक्ति बनाता है। – aaa