谷歌地图v3从地图之外的链接打开infowindow [英] Google maps v3 open infowindow from a link outside of map
问题描述
我试图在用户点击地图外的链接时打开信息窗口。不知道我在这里错过了什么。基本上,我有一个城市名单,每个城市都有一个ID(var id ids遍布整个ID)。当用户点击该链接时(点击=myclick('1')id就像该城市的信息窗口(1 =伦敦等)打开。
var url =我的json链接;
var gmarkers = [];任何帮助将不胜感激。
函数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
var x = parseFloat(j.data.cities [i] .lat);
var y = parseFloat (j.data.cities [i] .lon);
var ids = parseFloat(jd ata.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); (map.getZoom()< 5)
{
map.setZoom(map.getZoom()+ 1);
}
if
}
函数myclick(i){
google.maps.event.trigger(gmarkers [i],'click');
};
函数createMarker(){
var marker = new google.maps.Marker({
position:z,
map: map,
title:title,
html:contentstring,
图标:'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);
函数downloadUrl(url,callback){
var request = window.ActiveXObject?
new ActiveXObject('Microsoft.XMLHTTP'):
new XMLHttpRequest;
request.onreadystatechange = function(){
if(request.readyState == 4){
request.onreadystatechange = doNothing;
回调(request,request.status);
}
};
request.open('GET',url,true);
request.send(null);
}
函数doNothing(){};
看起来好像 myclick b
$ b
尝试将其明确地分配给上下文(在这种情况下为窗口):
this.myclick = function(i){
google.maps.event.trigger(gmarkers [i],'click');
};
Im trying to open the info window when a user clicks on a link from outside the map. Not sure what im missing here. Basically, i have a list of cities with an id for each(var ids loops over the ids). When the user clicks on that link(on click="myclick('1')" id like the infowindow for that city(1 = london etc) to open up.
Any help would be appreciated.
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() {};
It looks as if myclick will not be available in global context right now.
Try to explicitly assign it to the context(window in this case):
this.myclick=function(i) {
google.maps.event.trigger(gmarkers[i], 'click');
};
这篇关于谷歌地图v3从地图之外的链接打开infowindow的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!