Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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

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 - Fatal编程技术网

Javascript 带有重叠标记的不同图标

Javascript 带有重叠标记的不同图标,javascript,google-maps,Javascript,Google Maps,我正在实现github.com/jawj/OverlappingMarkerSpiderfier,以便在我的谷歌地图上创建Pin集群 我想做的是有一个I集群图标,里面有一个数字,告诉用户有多少pin,就像google默认集群视图一样。Se屏幕转储。如果不可能有一个数字,只要我可以设置一个我选择的集群图标就可以了。 屏幕显示群集在谷歌上的外观 单击群集时,它会打开并显示pin。在我的例子中,每个pin都是一个小缩略图。Se屏幕转储 屏幕显示单击群集后的外观 我的问题是,我不知道如何制作类似谷歌集

我正在实现github.com/jawj/OverlappingMarkerSpiderfier,以便在我的谷歌地图上创建Pin集群

我想做的是有一个I集群图标,里面有一个数字,告诉用户有多少pin,就像google默认集群视图一样。Se屏幕转储。如果不可能有一个数字,只要我可以设置一个我选择的集群图标就可以了。 屏幕显示群集在谷歌上的外观

单击群集时,它会打开并显示pin。在我的例子中,每个pin都是一个小缩略图。Se屏幕转储 屏幕显示单击群集后的外观

我的问题是,我不知道如何制作类似谷歌集群的解决方案。我的代码显示一个缩略图作为集群图标(参见screendumb),我想要“google解决方案”。 屏幕显示在单击群集之前它的外观

--到目前为止我的剧本--

//一些示例数据
var mapData=[{纬度:56.03519372,液化天然气:12.61253154,图片:“https://images.pexels.com/photos/2764678/pexels-photo-2764678.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200{lat:55.69293644,lng:12.56145395,图片:https://images.pexels.com/photos/1779487/pexels-photo-1779487.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200"},{拉丁美洲:55.69293644,液化天然气:12.56145395,图片:https://images.pexels.com/photos/3184454/pexels-photo-3184454.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200{lat:55.69293644,lng:12.56145395,图片:https://images.pexels.com/photos/4144294/pexels-photo-4144294.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200“},{lat:55.69293644,lng:12.56145395,图片:"https://images.pexels.com/photos/1714208/pexels-photo-1714208.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200"}];
函数initMap(){
var-clusterMarker=[];
var map=new google.maps.map(document.getElementById('map'){
中心:新的google.maps.LatLng(mapLat,mapLng),
缩放:10,
});
//创建信息窗口
var infoWindow=new google.maps.infoWindow();
//创建重叠标记spiderfier instance
var oms=新的重叠标记器(映射{
markersWontMove:没错,
马克斯旺泰德:是的,
});
//这是使蜘蛛侠工作所必需的
oms.addListener('click',函数(标记){
infoWindow.setContent(marker.desc);
信息窗口。打开(地图、标记);
});
var iconSize=新的google.maps.Size(50,50);
对于(var i=0;i
我认为您需要的一个选项是将“未命名”标记的图标设置为群集图标(默认设置为:
https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m1.png
)并将图标标签设置为标记的数量。请注意,这不会有完整的集群行为,它将始终具有相同的图标(在本例中为蓝色图标),它不会根据同一位置上标记的数量而改变。如果希望发生这种情况,可以实现这种行为,但这将是更复杂的代码

  google.maps.event.addListener(map, 'idle', function() { 
    // can't call markersNearMarker until idle event fires
    oms.addListener('format', function(marker, status) {
      var iconURL = status == OverlappingMarkerSpiderfier.markerStatus.SPIDERFIED ? marker.uniqIcon :
        status == OverlappingMarkerSpiderfier.markerStatus.SPIDERFIABLE ? "https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m1.png" :
        status == OverlappingMarkerSpiderfier.markerStatus.UNSPIDERFIABLE ? marker.uniqIcon :
        null;
      var spiderfiedMarkers = oms.markersNearMarker(marker, false);
      marker.setIcon({
        url: iconURL,
        scaledSize: new google.maps.Size(50, 50)
      });
      if (status == OverlappingMarkerSpiderfier.markerStatus.SPIDERFIABLE)
        marker.setLabel("" + (spiderfiedMarkers.length + 1));
      else
        marker.setLabel("");
    });
  });
注意:添加了标记的唯一图标作为标记的属性(
uniqIcon
),这样标记一旦被蜘蛛化,就可以设置为其唯一图标:

var marker = new google.maps.Marker({
  position: location,
  map: map,
  uniqIcon: point.picture
});
marker.setIcon({
  url: point.picture,
  title: "" + i,
  size: iconSize,
  scaledSize: iconSize
});

代码片段:

//一些示例数据
var mapData=[{纬度:56.03519372,液化天然气:12.61253154,图片:“https://images.pexels.com/photos/2764678/pexels-photo-2764678.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200{lat:55.69293644,lng:12.56145395,图片:https://images.pexels.com/photos/1779487/pexels-photo-1779487.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200"},{拉丁美洲:55.69293644,液化天然气:12.56145395,图片:https://images.pexels.com/photos/3184454/pexels-photo-3184454.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200{lat:55.69293644,lng:12.56145395,图片:https://images.pexels.com/photos/4144294/pexels-photo-4144294.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200{lat:55.69293644,lng:12.56145395,图片:https://images.pexels.com/photos/1714208/pexels-photo-1714208.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=200"}];
var-mapLat=0;
var-mapng=0;
函数initMap(){
var-clusterMarker=[];
var map=new google.maps.map(document.getElementById('map'){
中心:新的google.maps.LatLng(mapLat,mapLng),
缩放:10,
});
//创建信息窗口
var infoWindow=new google.maps.infoWindow();
//创建重叠标记spiderfier instance
var oms=新的重叠标记器(映射{
markersWontMove:没错,
马克斯旺泰德:是的,
});
google.maps.event.addListener(映射'idle',函数(){
oms.addListener('格式',功能(标记,状态){
var iconURL=status==OverlappingMarkerSpiderfier.markerStatus.Spiderified?marker.uniqIcon:
状态==重叠MarkersPiderFier.markerStatus.SPIDERFIABLE?”https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m1.png" :
状态==重叠MarkerSpiderFier.markerStatus.UnsiderFiable?marker.uniqIcon:
无效的
var spiderfiedMarkers=oms.markersNearMarker(marker,false);
marker.setIcon({
网址:iconURL,
scaledSize:new google.maps.Size(50,50)//使SVG图标在IE中工作
});
if(status==OverlappingMarkerSpiderfier.markerStatus.SPIDERFIABLE)
marker.setLabel(“+(spiderfiedMarkers.length+1));
其他的
marker.setLabel(“”);
});
});
//这个
var marker = new google.maps.Marker({
  position: location,
  map: map,
  uniqIcon: point.picture
});
marker.setIcon({
  url: point.picture,
  title: "" + i,
  size: iconSize,
  scaledSize: iconSize
});