3

當用戶點擊地圖之外的鏈接時,我試圖打開信息窗口。不知道我在這裏錯過了什麼。基本上,我有一個城市名單,每個城市都有一個ID(var id ids遍佈整個ID)。當用戶點擊該鏈接(在點擊=「MyClick認證(‘1’)」 ID,如信息窗口那城(1 =倫敦等)開拓。谷歌地圖v3從地圖之外的鏈接打開infowindow

任何幫助,將不勝感激。

var url = "my json link"; 
var gmarkers = []; 

function initialize() { 

var myLatlng = new google.maps.LatLng(0, 0); 
var myOptions = { 
    zoomControl: true, 
    disableDefaultUI: true, 
    center: myLatlng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

downloadUrl(url, function(data) { 

var j = eval('(' + data.responseText + ')'); 
var jlength = j.data.cities.length; 

var bounds = new google.maps.LatLngBounds(); 

for(i=0; i < jlength; i++) { 

    var x = parseFloat(j.data.cities[i].lat); 
    var y = parseFloat(j.data.cities[i].lon); 
    var ids = parseFloat(j.data.cities[i].id); 
    var z = new google.maps.LatLng(x,y); 
    var title = j.data.cities[i].title; 
    var contentstring = 'text' 

    var marker = createMarker(ids); 

    var infowindow = new google.maps.InfoWindow({content: contentstring}); 

    bounds.extend(z); 
    map.fitBounds(bounds); 

}; 

if (map.getZoom() == 21) 
    { 
     map.setZoom(16); 
    } 

if (map.getZoom() < 5) 
    { 
     map.setZoom(map.getZoom()+1); 
    } 


    function myclick(i) { 
     google.maps.event.trigger(gmarkers[i], 'click'); 
    }; 


    function createMarker(){ 

     var marker = new google.maps.Marker({ 
      position: z, 
      map: map, 
      title: title, 
      html: contentstring, 
      icon: 'imagelink' 
     }); 

     google.maps.event.addListener(marker,'click',function(){ 
     infowindow.setContent(this.html); 
     infowindow.open(map,marker); 
     }); 

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

     gmarkers[ids] = marker; 

    }; 

}); 

}; 

google.maps.event.addDomListener(window, 'load', initialize); 

function downloadUrl(url, callback) { 
    var request = window.ActiveXObject ? 
     new ActiveXObject('Microsoft.XMLHTTP') : 
     new XMLHttpRequest; 

    request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     request.onreadystatechange = doNothing; 
     callback(request, request.status); 
    } 
    }; 

    request.open('GET', url, true); 
    request.send(null); 
} 

function doNothing() {}; 

回答

9

看起來好像了MyClick不會是現在全球範圍內提供

儘量明確它(在這種情況下,窗口)分配到上下文:

this.myclick=function(i) { 
     google.maps.event.trigger(gmarkers[i], 'click'); 
    }; 
+0

感謝反應,但仍然沒有喜歡害怕。 – Hatzi 2012-01-31 12:36:26

+0

然後你犯了一個錯誤,它適用於我:http://jsfiddle.net/sRTkp/ – 2012-01-31 15:06:23

+1

你的明星,雖然它還沒有完全解決我的問題,但我現在知道問題在於我打電話地圖和來自不同xslt的鏈接。你上面的代碼是我的問題的答案。非常感謝。 – Hatzi 2012-01-31 15:21:29