2011-12-26 17 views
7

मैं gmap v3 का उपयोग कर रहा हूं। मुझे एक समस्या का सामना करना पड़ रहा है। समस्या यह है कि मैं गतिशील रूप से मार्कर बना रहा हूं और इसी समय मैं उस मार्कर का इन्फॉंडो बना रहा हूं। अब मैं मार्कर के किसी भी infowindow में कुछ सामग्री जोड़ना चाहता हूँ। लेकिन मुझे नहीं पता कि मैं infowindow की सामग्री कैसे प्राप्त कर सकता हूं। मैंने अपने मार्कर ऑब्जेक्ट्स को सरणी में और infowindow की ऑब्जेक्ट्स में भी संग्रहीत किया है। लेकिन कोई समाधान नहीं मिला।एक मार्कर के infobubble की सामग्री प्राप्त करना चाहते हैं?

मैं मार्कर के आधार पर infowindow की सामग्री प्राप्त करना चाहता हूं।

संपादित करें:

var markerArray = new Array(); 
var infoArray = new Array(); 

function placemarker(point,id, contents){ 
var marker = new google.maps.Marker({ 
    icon: image, 
    position: point, 
    map: map, 
    title: name 
}); 

markerArray[id] = marker; 

var infoBubble = new InfoBubble(); 
var content = contents; 
infoBubble.setContent(content); 
google.maps.event.addListener(marker,"mouseover",function(event){ 
    for(var i=0; i < infoArray.length ; i++) 
    infoArray[i].close(); 
    infoBubble.open(map,marker); 
}); 
infoArray.push(infoBubble); 
} 

यह समारोह एक समारोह में कई बार हुआ है कि नक्शे पर मार्कर बनाने के भीतर कहा जाता है। अब एक शर्त पर दो मार्कर एक ही लंबे समय तक हैं और मैं मार्कर सामग्री दोनों के infowindow के साथ एकल मार्कर दिखाना चाहता हूं। मैं एकल मार्कर बनाने में सक्षम हूं लेकिन सामग्री विंडो में सामग्री को जोड़ने में सक्षम नहीं हूं।

उत्तर

2

आप पहले से ही अपने infoArray में सभी InfoWindow के रख रहे हैं, यही कारण है कि आप बस उन्हें एक ही आईडी वाले की दुकान नहीं के रूप में आप अपने मार्कर के साथ क्या करते हो?

var markers = {}; 
var infoWindows = {}; 

function placemarker(point, id, contents) { 
    var marker = ... 
    ... 
    markers[id] = marker; 

    var infoWindow = ... 
    ... 
    infoWindows[id] = infoWindow; 
} 

(ध्यान दें कि मैं हैश के साथ अपने सरणियों जगह ले ली है।) अब आप हर मार्कर के InfoWindow (और getContent() के माध्यम से अपनी सामग्री) आप मार्कर खुद का उपयोग उसी तरह उपयोग कर सकते हैं।

2

यह सुंदर पुराना है लेकिन लगा कि मैं इस एक शॉट

मुझे यकीन है कि क्या InfoBubble मेरी उदाहरण मैं InfoWindow उपयोग कर रहा हूँ के लिए है नहीं कर रहा हूँ देना होगा।

function createMarker(objPoint) 
{ 
    objPoint = new google.maps.LatLng(strLat, strLng); 

    strFromHtml = 'Your HTML'; 

    //creates the window with the options 
    objInfoWindow = new google.maps.InfoWindow(
    { 
     content: strToHtml, 
     maxWidth: 250, 
     zIndex: -1 
    }); 

    var markerOptions = 
    { 
     position: objPoint, 
     map: objMap 
    } 

    objMarker = new google.maps.Marker(markerOptions); 

    //if the marker is clicked open the window 
    google.maps.event.addListener(objMarker, "click", function() 
    { 
     objInfoWindow.open(objMap, objMarker); 
    }); 
} 

मैं पहली बार खिड़की बनाने के लिए, तो मार्कर, मैं तो एक क्लिक श्रोता मार्कर जब मार्कर क्लिक किया जाता है उस पर infowindow प्रदर्शित करने के लिए देते हैं। आप क्लिक आउट ले सकते हैं और इसे प्रदर्शित कर सकते हैं लेकिन मेरे उद्देश्यों के लिए मैं चाहता हूं कि उन्हें इसे क्लिक करना पड़े।

संपादित

ठीक है, मैं अपने प्रश्न के बारे में 50 बार पुन: पढ़ने की है और मुझे आशा है कि इस समाधान अच्छा है। एक स्थान पर एकाधिक मार्करों के लिए मेरे पास इसका कोई जवाब नहीं है। मुझे लगता है कि मेरे पास अपनी जानकारी के साथ एकाधिक मार्करों का उत्तर है। यदि यह काम नहीं करता है तो आपको jsfiddle में कुछ उदाहरण बनाना होगा या अन्यथा मुझे समझ में नहीं आता कि आप क्या चाहते हैं। इसे यहां देखें jsfiddle

जानकारी बनाते समय आप केवल डिफ़ॉल्ट सामग्री को पकड़ने के बाद इसे बनाते हैं। तो इसे मानचित्र के आरंभ में ही रखें। फिर मार्कर बनाने के दौरान आप infowindow दिखाने के लिए एचटीएमएल रखने के लिए मार्कर का उपयोग कर सकते हैं।

var markerOptions = 
{ 
    position: objPoint, 
    map: objMap, 
    html: strHtml//added to make the marker object store the content of the infowindow 
} 

फिर अपने माउसओवर श्रोता में आप this.html का उपयोग infowindow

google.maps.event.addListener(objMarker, "mouseover", function() 
{ 
    objInfoWindow.setContent(this.html); 
    objInfoWindow.open(objMap, this); 
}); 

एक स्थान में कई मार्करों के लिए के रूप में के लिए सामग्री प्राप्त करने के। मुझे प्रोग्रामेटिक रूप से कहना होगा कि आपको इसे पकड़ना होगा और केवल एक मार्कर में दोनों की सामग्री के साथ एक मार्कर बनाना होगा।

+0

लेकिन जहां आपने इसे बनाने के बाद इन्फोबबल की सामग्री ली है। बस सवाल सावधानी से पढ़ें। –

+0

@Gaurav संपादन के बाद जवाब क्या काम नहीं कर रहा है, उचित लगता है? – slawekwin

+0

नहीं, मेरा सवाल है कि सामग्रियों का मूल्य कैसे प्राप्त करें, पिछले इन्फोबबल का HTML है। –

1

मुझे नहीं लगता कि Google मानचित्र में मार्कर खोजना संभव है (जो मुझे लगता है कि आप क्या करने की कोशिश कर रहे हैं)।

क्या आपको दो मार्कर बनाने की आवश्यकता है जब भी वे एक ही बिंदु पर हों? यदि नहीं, तो मैं केवल उस सरणी में जानकारी बुलबुले का ट्रैक रखूंगा जहां बिंदु निर्देशांक कुंजी है। तो इससे पहले कि आप एक नई जानकारी बनाएं, बबल आप जांचते हैं कि आपके पास पहले से कोई है या नहीं और यदि ऐसा है तो आप इसे एक नई संयुक्त जानकारी बबल के साथ बदल दें।

यहां एक कोड ड्राफ्ट है।

if(infoArray[point.lat+'_'+point.lng] != undefined){ 
    tmpBubble = infoArray[point.lat+'_'+point.lng]; 
    infoBubble = createCombinedBubble(tmpBubble, infoBubble); 
} 
infoArray[point.lat+'_'+point.lng] = infoBubble; 
संबंधित मुद्दे