Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
GoogleMapsAPIv3-多个带有Javascript的标记悬停_Javascript_Arrays_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

GoogleMapsAPIv3-多个带有Javascript的标记悬停

GoogleMapsAPIv3-多个带有Javascript的标记悬停,javascript,arrays,google-maps-api-3,google-maps-markers,Javascript,Arrays,Google Maps Api 3,Google Maps Markers,我想为我在地图上使用的不同标记图标设置不同的悬停 这是我的标记图标阵列 //Marker Icons var markerIcon = { unvisitedMarker: { url: 'img/marker.png', size: new google.maps.Size(30, 30), origin: new google.maps.Point(0, 0), ancho

我想为我在地图上使用的不同标记图标设置不同的悬停

这是我的标记图标阵列

//Marker Icons
    var markerIcon = {
        unvisitedMarker: {
            url: 'img/marker.png',
            size: new google.maps.Size(30, 30),
            origin: new google.maps.Point(0, 0),
            anchor: new google.maps.Point(15, 15)
        },
        unvisitedMarkerHover: {
            url: 'img/marker.png',
            size: new google.maps.Size(30, 30),
            origin: new google.maps.Point(30, 0),
            anchor: new google.maps.Point(15, 15)
        },
        activeMarker: {
            url: 'img/marker.png',
            size: new google.maps.Size(30, 30),
            origin: new google.maps.Point(60, 0),
            anchor: new google.maps.Point(15, 15)
        },
        visitedMarker: {
            url: 'img/marker.png',
            size: new google.maps.Size(30, 30),
            origin: new google.maps.Point(90, 0),
            anchor: new google.maps.Point(15, 15)
        },
        visitedMarkerHover: {
            url: 'img/marker.png',
            size: new google.maps.Size(30, 30),
            origin: new google.maps.Point(120, 0),
            anchor: new google.maps.Point(15, 15)
        }
我在一个精灵里得到了所有的图标。 我想为带有“unvisitedMarkerHover”的“unvisitedMarker”和带有“visitedMarkerHover”的“visitedMarker”设置悬停效果。如果标记具有“activeMarker”图标,则不应获得悬停效果

我的问题是-我不知道如何设置“如果”的要求

//marker hover effect
        marker.addListener('mouseover', function() {
            if (???) { ... }
        });

        marker.addListener('mouseout', function() {
            if (???) { ... }
        });
之后,我知道我可以设置图标:

marker.setIcon(markerIcon['unvisitedMarker']);

所以,如果有人能帮助我的if要求-这将是可怕的

这一个没有那么简单。因为我没有诸如图片的URL之类的细节,所以我创建了一个示例应用程序,其中我们至少有90%的相似性重要提示:请不要使用我用于避免版权问题的图像。

首先,我创建了公共变量:映射标记“标记”是一个空数组

var map; 
var markers = [];
我还创建了自己版本的markerIcon对象

var markerIcon = {
    url : 'http://oi68.tinypic.com/30idv0z.jpg',
    unvisitedMarkerHover: 'http://oi65.tinypic.com/jgo3r8.jpg',
    originlUrl: 'http://oi68.tinypic.com/30idv0z.jpg',
    visitedMarkerHover: 'http://oi65.tinypic.com/ejbn88.jpg',
    status: {
      unvisitedMarker : {
        statusName: 'unvisitedMarker',
      },
      activeMarker : {
        statusName: 'activeMarker',
      },
      visitedMarker : {    
        statusName: 'visitedMarker',
      }
    }
}; 
  google.maps.event.addListener(marker, 'mouseover', function() {
     if ( this.currentStatus !== markerIcon.status.activeMarker.statusName ) {
       if ( this.status === markerIcon.status.unvisitedMarker.statusName ) {
         this.setIcon(markerIcon.unvisitedMarkerHover);      
       } else {
         this.setIcon(markerIcon.visitedMarkerHover);            
       }
      this.setPosition(this.position);  
      console.log(this.currentStatus, this.status, this.id);      
     }
  });
  google.maps.event.addListener(marker, 'mouseout', function() {
      this.setIcon(markerIcon.originlUrl);      
  });
  google.maps.event.addListener(marker, 'click', function() {
     for ( var i = 0; i < markers.length; i++ ) {
       markers[i].currentStatus = '';
     }     
     this.currentStatus = markerIcon.status.activeMarker.statusName;
     this.status = markerIcon.status.visitedMarker.statusName;
     console.log(this.currentStatus, this.status);
  });

我在旧金山使用了<强>坐标< /强>为我的地图中心和<强> < /强>。我使用了作为地点搜索,并使用旧金山的坐标作为地点属性。半径设置为500(以米为单位)。这对于结合位置属性(将圆的中心指定为LatLng对象)非常重要。对于类型,我仅将其限制为存储。要了解有关支持类型的更多信息,请查看

var service = new google.maps.places.PlacesService(map);
service.nearbySearch({
    location: myLatLng,
    radius: '500',
    type: ['store']
}, callback);
在附近的搜索回调中,它返回一个结果数组。这就是我所做的:

function createMarker(place, markerId) {
 var placeLoc = place.geometry.location;
 var marker = new google.maps.Marker({
     id: markerId,
     map: map,
     position: placeLoc,
     title: 'Hello World!',
     anchor: new google.maps.Point(15, 15),
     icon: {
       url : markerIcon.url,
     },
     currentStatus: '',
     status: markerIcon.status.unvisitedMarker.statusName,
     size: new google.maps.Size(30,30),
  });
  markers.push(marker);
}  

function callback(results, status) {
  if (status === google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
        createMarker(results[i],i);
    }
  }
}