google maps v3 上的 infoWindow 不工作
infoWindow on google maps v3 doesn't work
抱歉我的英语不好:-S
我有一个小问题。
我从外部 json 文件加载 json 数据。
这里是文件的内容:
{
"Pizza Dach": {
"Kategorie": "Pizza",
"Position": {
"Longitude": 13.456106,
"Latitude": 52.51024
}
},
"Burgeramt": {
"Kategorie": "Burger",
"Position": {
"Longitude": 13.459539,
"Latitude": 52.510299
}
},
"DUDU": {
"Kategorie": "Pizza",
"Position": {
"Longitude": 13.415165,
"Latitude": 52.493024
}
}
}
这是我的 js 代码:
var karte;
var marker;
var meineLongitude, meineLatitude;
/* Karte */
var positionsAusgabe = function(position){
width = document.getElementById('karte').offsetWidth;
height = document.getElementById('karte').offsetHeight;
meineLongitude = position.coords.longitude;
meineLatitude = position.coords.latitude;
var optionen = {
zoom: 13,
center: new google.maps.LatLng(meineLatitude, meineLongitude),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var infoWindow = new google.maps.InfoWindow();
karte = new google.maps.Map(document.getElementById('karte'), optionen);
window.setTimeout(function(){
$.getJSON('daten/restaurants.json?='+Date.now(), function(data){
$.each(data, function(restaurant, daten){
marker = new google.maps.Marker({
map: karte,
icon: 'bilder/'+daten.Kategorie+'.png',
position: new google.maps.LatLng(daten.Position.Latitude,daten.Position.Longitude)
});
(function(marker, data) {
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent('+daten.Kategorie+');
infoWindow.open(map, marker);
});
});
});
// window.scrollTo(0,1);
});
},1);
};
嗯,问题是,标记正在设置,具有正确的图标和正确的位置,但我不知道为什么 infoWindow 没有出现。我确定我在 js 代码中做错了什么,但我没有找到错误。
有人有想法吗?
非常感谢。 :-)
您的这部分代码将不执行任何操作:
(function(marker, data) {
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent('+data.Kategorie+');
infoWindow.open(map, marker);
});
});
你定义了一个函数,但你没有执行它。
试试这个:
(function(marker, data) {
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent(daten.Kategorie);
infoWindow.open(karte, marker);
});
}(marker,daten));
不过,这个功能是没有必要的。您已经在一个函数($.each
-回调)中,当您将标记变量设为本地时,它不会被覆盖:
$.each(data, function(restaurant, daten){
var marker = new google.maps.Marker({
map: karte,
icon: 'bilder/'+daten.Kategorie+'.png',
position: new google.maps.LatLng(daten.Position.Latitude,daten.Position.Longitude)
});
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent(daten.Kategorie);
infoWindow.open(karte, marker);
});
});
抱歉我的英语不好:-S 我有一个小问题。 我从外部 json 文件加载 json 数据。 这里是文件的内容:
{
"Pizza Dach": {
"Kategorie": "Pizza",
"Position": {
"Longitude": 13.456106,
"Latitude": 52.51024
}
},
"Burgeramt": {
"Kategorie": "Burger",
"Position": {
"Longitude": 13.459539,
"Latitude": 52.510299
}
},
"DUDU": {
"Kategorie": "Pizza",
"Position": {
"Longitude": 13.415165,
"Latitude": 52.493024
}
}
}
这是我的 js 代码:
var karte;
var marker;
var meineLongitude, meineLatitude;
/* Karte */
var positionsAusgabe = function(position){
width = document.getElementById('karte').offsetWidth;
height = document.getElementById('karte').offsetHeight;
meineLongitude = position.coords.longitude;
meineLatitude = position.coords.latitude;
var optionen = {
zoom: 13,
center: new google.maps.LatLng(meineLatitude, meineLongitude),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var infoWindow = new google.maps.InfoWindow();
karte = new google.maps.Map(document.getElementById('karte'), optionen);
window.setTimeout(function(){
$.getJSON('daten/restaurants.json?='+Date.now(), function(data){
$.each(data, function(restaurant, daten){
marker = new google.maps.Marker({
map: karte,
icon: 'bilder/'+daten.Kategorie+'.png',
position: new google.maps.LatLng(daten.Position.Latitude,daten.Position.Longitude)
});
(function(marker, data) {
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent('+daten.Kategorie+');
infoWindow.open(map, marker);
});
});
});
// window.scrollTo(0,1);
});
},1);
};
嗯,问题是,标记正在设置,具有正确的图标和正确的位置,但我不知道为什么 infoWindow 没有出现。我确定我在 js 代码中做错了什么,但我没有找到错误。 有人有想法吗? 非常感谢。 :-)
您的这部分代码将不执行任何操作:
(function(marker, data) {
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent('+data.Kategorie+');
infoWindow.open(map, marker);
});
});
你定义了一个函数,但你没有执行它。
试试这个:
(function(marker, data) {
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent(daten.Kategorie);
infoWindow.open(karte, marker);
});
}(marker,daten));
不过,这个功能是没有必要的。您已经在一个函数($.each
-回调)中,当您将标记变量设为本地时,它不会被覆盖:
$.each(data, function(restaurant, daten){
var marker = new google.maps.Marker({
map: karte,
icon: 'bilder/'+daten.Kategorie+'.png',
position: new google.maps.LatLng(daten.Position.Latitude,daten.Position.Longitude)
});
google.maps.event.addListener(marker, "click", function(e) {
infoWindow.setContent(daten.Kategorie);
infoWindow.open(karte, marker);
});
});