Javascript 添加标记后添加信息窗口
我想为每个标记添加一个信息窗口。它们是用addMarker函数添加的(因此我可以使用Mixitup)。 实际上,同一个信息窗口在同一个标记上打开。我应该如何继续,以便每个标记在单击中都有自己的信息窗口Javascript 添加标记后添加信息窗口,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我想为每个标记添加一个信息窗口。它们是用addMarker函数添加的(因此我可以使用Mixitup)。 实际上,同一个信息窗口在同一个标记上打开。我应该如何继续,以便每个标记在单击中都有自己的信息窗口 var gmarkers1 = []; var markers1 = []; var bounds = new google.maps.LatLngBounds(); var infowindow = new google.maps.InfoWindow(); var markers1 = [
var gmarkers1 = [];
var markers1 = [];
var bounds = new google.maps.LatLngBounds();
var infowindow = new google.maps.InfoWindow();
var markers1 = [
<?php
$arraysize = sizeof($locationsbrutes);
for ($x = 0; $x < $arraysize; $x++) {
echo '["';
echo htmlspecialchars_decode($locationsbrutes[$x][2]);
echo '",';
echo $locationsbrutes[$x][0];
echo ',';
echo $locationsbrutes[$x][1];
echo ',';
echo $locationsbrutes[$x][3];
if($arraysize > $x){
echo '],';
}
else{
echo ']';
}
}
?>
];
function initialize() {
var center = new google.maps.LatLng(52.4357808, 4.991315699999973);
var mapOptions = {
zoom: 12,
center: center,
styles:[{"featureType":"water","stylers":[{"saturation":43},{"lightness":-11},{"hue":"#0088ff"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"hue":"#ff0000"},{"saturation":-100},{"lightness":99}]},{"featureType":"road","elementType":"geometry.stroke","stylers":[{"color":"#808080"},{"lightness":54}]},{"featureType":"landscape.man_made","elementType":"geometry.fill","stylers":[{"color":"#ece2d9"}]},{"featureType":"poi.park","elementType":"geometry.fill","stylers":[{"color":"#ccdca1"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#767676"}]},{"featureType":"road","elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"}]},{"featureType":"poi","stylers":[{"visibility":"off"}]},{"featureType":"landscape.natural","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#b8cb93"}]},{"featureType":"poi.park","stylers":[{"visibility":"on"}]},{"featureType":"poi.sports_complex","stylers":[{"visibility":"on"}]},{"featureType":"poi.medical","stylers":[{"visibility":"on"}]},{"featureType":"poi.business","stylers":[{"visibility":"simplified"}]}],
scrollwheel: false,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
for (i = 0; i < markers1.length; i++) {
addMarker(markers1[i]);
}
map.fitBounds(bounds);
}
/**
* Function to add marker to map
*/
function addMarker(marker) {
var category = marker[3];
var pos = new google.maps.LatLng(marker[1], marker[2]);
var icon = 'myiconurl';
var content = marker[0];
marker1 = new google.maps.Marker({
position: pos,
category: category,
map: map,
icon:icon,
content:content
});
marker1.addListener('click', function() {
infowindow.setContent('Test');
infowindow.open(map, marker1);
});
gmarkers1.push(marker1);
bounds.extend(marker1.position);
}
filterMarkers = function (category) {
console.log(category);
for (i = 0; i < markers1.length; i++) {
marker = gmarkers1[i];
// If is same category or category not picked
if (marker.category == category || category.length === 0) {
marker.setVisible(true);
}
// Categories don't match
else {
marker.setVisible(false);
}
}
}
// Init map
initialize();
var gmarkers1=[];
var markers1=[];
var bounds=new google.maps.LatLngBounds();
var infowindow=new google.maps.infowindow();
变量标记1=[
];
函数初始化(){
var center=new google.maps.LatLng(52.4357808,4.9913156999973);
变量映射选项={
缩放:12,
中心:中心,,
样式:[{“featureType”:“water”,“stylers”:[{“saturation”:43},{“lightness”:-11},{“hue”:“featureType”:“road”,“elementType”:“geometry.fill”,“stylers”:[{“hue”:“#ff0000”},{“saturation”:-100},{“lightness”:99},{“featureType”:“road”,“elementType”:“geometry.stroke”,“stylers”:“{“color”:“color”:“geometry.fill”,“stylers”:“ff0000”},{“饱和度”:-100},{“lightness”:-100},{“lightness”:“景观.人造”、“元素类型”:“几何体.填充”、“样式器”:[{“颜色”:“ece2d9”}、{“特征类型”:“poi.park”、“元素类型”:“几何体.填充”、“样式器”:[{“颜色”:“ccdca1”}、{“特征类型”:“道路”、“元素类型”:“标签.文本.填充”、“样式器”:[{“颜色”:“#767676”}、{“特征类型”:“道路”、“元素类型”:“标签.文本.笔划”、“样式器”{,{“featureType”:“poi”,“stylers”:[{“visibility”:“off”}],{“featureType”:“landscape.natural”,“elementType”:“geometry.fill”,“stylers”:[{“visibility”:“on”},{“color”:“{”b8cb93”}],{“featureType”:“poi.park”,“stylers”:[{“visibility”:“on”}],{“featureType”:“poi.sports.U综合体”,“stylers”:“on”{“visibility”:“on”},{可见性“:”on“}]},{”featureType“:”poi.business“,”样式器“:[{”可见性“:”simplified“}]}],
滚轮:错误,
mapTypeId:google.maps.mapTypeId.TERRAIN
};
map=new google.maps.map(document.getElementById('map_canvas'),mapOptions);
对于(i=0;i
信息窗口仍然在同一个标记上打开(而不是单击的标记)。请立即尝试。我认为,如果不在marker1之前放置var
,它是一个全局变量,然后当click函数执行时,marker1变量不再相同。如果放置var
则是其局部变量,因此每个函数都有自己的标记变量
function addMarker(marker) {
var category = marker[3];
var pos = new google.maps.LatLng(marker[1], marker[2]);
var icon = 'myiconurl';
var content = marker[0];
var marker1 = new google.maps.Marker({
position: pos,
category: category,
map: map,
icon:icon,
content:content
});
marker1.addListener('click', function() {
if(!marker1.infowindow) {
marker1.infowindow = new google.maps.InfoWindow();
marker1.infowindow.setContent('Test');
}
marker1.infowindow.open(map, marker1);
});
gmarkers1.push(marker1);
bounds.extend(marker1.position);
}