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 谷歌地图MarkerClusterer信息窗口位置_Javascript_Google Maps_Google Maps Api 3_Marker_Markerclusterer - Fatal编程技术网

Javascript 谷歌地图MarkerClusterer信息窗口位置

Javascript 谷歌地图MarkerClusterer信息窗口位置,javascript,google-maps,google-maps-api-3,marker,markerclusterer,Javascript,Google Maps,Google Maps Api 3,Marker,Markerclusterer,我对markercluster信息窗口的位置有问题。它不会出现在标记位置。相反,它位于地图的左上角。这是我的密码: <script type="text/javascript"> function initialize(cities) { var mapOptions = { center: new google.maps.LatLng(48.220, 15.199), zoom: 9, mapTypeId: google.maps.M

我对markercluster信息窗口的位置有问题。它不会出现在标记位置。相反,它位于地图的左上角。这是我的密码:

<script type="text/javascript">
  function initialize(cities) {
    var mapOptions = {
      center: new google.maps.LatLng(48.220, 15.199),
      zoom: 9,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
    };

    var map = new google.maps.Map(document.getElementById("map"), mapOptions);
    var markers=[];
    var markerCluster = new MarkerClusterer(map, markers, {zoomOnClick: false});

    //markerCluster should be always above the geocoder-->
     geocoder = new google.maps.Geocoder();

     for (var i = 0; i < cities.length; i++) {
      var city = cities[i];
      geocoder.geocode({'address': city.city+" Niederösterreich"}, function(results, status){
       if (status == google.maps.GeocoderStatus.OK) {
        position=results[0].geometry.location;
        var marker = new google.maps.Marker({
         map: map,
         position: position,
         title: "Ort: "+city.city + "\nBeitrag: " + city.title +"\nRed.: "+ city.reporter +"\nDatum: "+ city.storydate,
        });
        // below code alway lies inside the loop
        markers.push(marker);
        markerCluster.addMarker(marker);
       }
      });
     };

      // Listen for a cluster to be clicked
      google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) {
        var markers = markerCluster.getMarkers();

        var content = '';
        for (var i = 0; i < markers.length; i++) {
          var marker = markers[i];
          content += marker.title;
          content += ("<br>");
        };
        // Convert lat/long from cluster object to a usable MVCObject
        var info = new google.maps.MVCObject;

        var infowindow = new google.maps.InfoWindow();
        // infowindow.setPosition(this.markerCluster.getCenter());
        // infowindow.setPosition(latLng);
        infowindow.close();
        infowindow.setContent(content);
        infowindow.open(map, info);
        google.maps.event.addListener(map, 'zoom_changed', function() { infowindow.close() });
      });

    }
  </script>

函数初始化(城市){
变量映射选项={
中心:新google.maps.LatLng(48.220,15.199),
缩放:9,
mapTypeId:google.maps.mapTypeId.ROADMAP,
};
var map=new google.maps.map(document.getElementById(“map”)、mapOptions);
var标记=[];
var markerCluster=newmarkerclusterer(映射,标记,{zoomOnClick:false});
//markerCluster应始终位于地理编码器-->
geocoder=新的google.maps.geocoder();
对于(变量i=0;i”);
};
//将lat/long从集群对象转换为可用的MVCObject
var info=new google.maps.MVCObject;
var infowindow=new google.maps.infowindow();
//infowindow.setPosition(this.markerCluster.getCenter());
//信息窗口设置位置(latLng);
infowindow.close();
infowindow.setContent(content);
信息窗口。打开(地图、信息);
google.maps.event.addListener(map'zoom_changed',function(){infowindow.close()});
});
}

您的MVCObject没有任何属性。根据,如果将可选的
anchor
参数传递到函数
.open
,它必须公开一个LatLng position属性,而您的属性没有(因为它没有任何属性,所以不能公开任何属性)

打开(地图?:地图|街景全景,锚?:MVCObject)

返回值:无

在给定地图上打开此信息窗口可选地,信息窗口可以与锚关联。在核心API中,唯一的锚点是Marker类。但是,定位点可以是任何MVCObject,该MVCObject公开了LatLng position特性和用于计算像素偏移的点定位点特性(可选)(请参见InfoWindowOptions)。锚点是从锚点位置到信息窗口顶端的偏移量。

最简单的解决方案是不使用
anchor
参数,直接设置infowindow的位置

google.maps.event.addListener(markerCluster, 'clusterclick', function (cluster) {
    var markers = cluster.getMarkers();

    var content = '';
    for (var i = 0; i < markers.length; i++) {
        var marker = markers[i];
        content += marker.title;
        content += ("<br>");
    }
    var infowindow = new google.maps.InfoWindow();
    infowindow.setPosition(cluster.getCenter());
    infowindow.setContent(content);
    infowindow.open(map);
    google.maps.event.addListener(map, 'zoom_changed', function () {
        infowindow.close();
    });
});

MVCObject没有任何属性做一些研究。如果你想不出来,就创建一个演示问题的示例,然后再问另一个问题。