簡體   English   中英

谷歌地圖v3打開infowindow從地圖外的鏈接

[英]Google maps v3 open infowindow from a link outside of map

當用戶點擊地圖外部的鏈接時,我正在嘗試打開信息窗口。 不知道我在這里缺少什么。 基本上,我有一個城市列表,每個城市都有一個id(在id上的var ids循環)。 當用戶點擊該鏈接時(點擊=“myclick('1')”id就像該城市的信息窗口(1 =倫敦等)打開。

任何幫助,將不勝感激。

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() {};

看起來好像myclick現在無法在全球范圍內使用。

嘗試將其顯式分配給上下文(在本例中為窗口):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM