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