2011-02-24 8 views
5

मेरे पास निम्न कोड है, लेकिन यह काम नहीं कर रहा है, लिंक केवल अंतिम बिंदु (अर्जेंटीना) पर दिखाया गया है, कुछ मदद?Google मानचित्र मार्कर एक लिंक के रूप में

<div id="map" style="width: 980px; height: 420px;margin:10px 0px 30px;"></div> 

<script type="text/javascript"> 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 2, 
     center: new google.maps.LatLng(0,0), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    var usa = new google.maps.LatLng(37.09024, -95.712891); 
    var brasil = new google.maps.LatLng(-14.235004, -51.92528); 
    var argentina = new google.maps.LatLng(-38.416097, -63.616672); 

    var marker = new google.maps.Marker({ 
     position: usa, 
     url: '/destinos/exibir/pais_id/3', 
     title: 'Estados Unidos', 
     map: map 
    }); 

    var marker = new google.maps.Marker({ 
     position: brasil, 
     url: '/destinos/exibir/pais_id/2', 
     title: 'Brasil', 
     map: map 
    }); 

    var marker = new google.maps.Marker({ 
     position: argentina, 
     url: '/destinos/exibir/pais_id/1', 
     title: 'Argentina', 
     map: map 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
     window.location.href = marker.url; 
    }); 

    </script> 

उत्तर

11

jsfiddle डेमो:

समस्या आप मार्कर घोषित 3 बार है, और केवल एक ही है कि पिछले घोषित किया जाता है पर घटना क्लिक देते हैं। इसलिए, आपको 3 अलग-अलग मार्करों के लिए 3 अलग-अलग नाम घोषित करना होगा और उनमें से प्रत्येक को ऑनक्लिक ईवेंट से संलग्न करना होगा। बेहतर आप एक सरणी या कुछ में ऐसा करता है, तो

var markers = []; 

markers[0] = new google.maps.Marker({ 
    position: usa, 
    url: '/destinos/exibir/pais_id/3', 
    title: 'Estados Unidos', 
    map: map 
}); 

markers[1] = new google.maps.Marker({ 
    position: brasil, 
    url: '/destinos/exibir/pais_id/2', 
    title: 'Brasil', 
    map: map 
}); 

markers[2] = new google.maps.Marker({ 
    position: argentina, 
    url: '/destinos/exibir/pais_id/1', 
    title: 'Argentina', 
    map: map 
}); 

for (i = 0; i < markers.length; i++) { 
    google.maps.event.addListener(markers[i], 'click', function() { 
     window.location.href = this.url; //changed from markers[i] to this 
    }); 
} 
+3

मुझे इसे काम करने के लिए 'यह [i] '' '' 'में बदलना पड़ा। – dlras2

4

आप प्रत्येक मार्कर को एक ही वैरिएबल नाम दे रहे हैं, इसलिए मुझे लगता है कि संदर्भ 'मार्कर' केवल अंतिम (अर्जेंटीना) को इंगित करेगा।

आप उन्हें अलग-अलग नाम देने और श्रोता को अलग से बाध्य करने का प्रयास कर सकते हैं। उदाहरण @hsz संशोधन बढ़ाने के साथ

+0

के समान तर्क का उपयोग कर रहा था, अगर इस पुराने विषय को फिर से टक्कर मारने के लिए खेद है, यदि सरणी का उपयोग नहीं करते हैं तो क्या आप मार्कर घोषित करने के बारे में विस्तार से बता सकते हैं? मैं सरणी का उपयोग कर रहा था और केवल अंतिम मूल्य वापस लौटाया जा रहा है जैसे मार्कर पर क्लिक करें। – Joe

+0

क्षमा करें, किसी अन्य फ़ंक्शन को सृजन भाग को पार करने की विधि को हल किया गया है :) – Joe

3

बस किसी के लिए भी भविष्य में संदर्भ के लिए इस उत्तर को जोड़ने की जरूरत है अगर वे यह

एक और createMarker कार्य करने के लिए विवरण भेजें

createMarker(pos,title,weburl) 
{ 
marker = new google.maps.Marker({ 
position: pos, 
title: title, 
map: map 
}); 
google.maps.event.addListener(marker, 'click', function() { 
    window.location.href = weburl; 
}); 
} 

धन्यवाद टॉम इलियट इस मुद्दे को इंगित करने के लिए, मैं kjy112

संबंधित मुद्दे