Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加标记后添加信息窗口_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 添加标记后添加信息窗口

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 = [

我想为每个标记添加一个信息窗口。它们是用addMarker函数添加的(因此我可以使用Mixitup)。 实际上,同一个信息窗口在同一个标记上打开。我应该如何继续,以便每个标记在单击中都有自己的信息窗口

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