在Google地图文档(https://developers.google.com/maps/documentation/javascript/reference#MarkerOptions)中,它说:
“当google.maps.visualRefresh设置为true时,不会呈现阴影。”
是否可以覆盖此内容并在使用visualRefresh时显示阴影?
我还找到了说明这一点的文档(https://devsite.googleplex.com/maps/documentation/javascript/basics):
视觉刷新中已删除所有阴影。以编程方式指定的任何阴影都将被忽略。
我觉得他们似乎不会允许你以某种方式覆盖它以允许阴影和visualRefresh,如果是这种情况。
答案 0 :(得分:4)
您可以使用阴影创建标记图标。
或者为包含阴影的标记制作自定义叠加层(即不是google.maps.Marker对象)。
proof of concept,来自我对相关问题的回答:Marker shadows in Google Maps v3
现在更多的工作,但仍然可能,因为它不再是默认行为。
答案 1 :(得分:0)
为什么不创建一个z-index较低的额外标记?它比创建自定义叠加层的工作少,可以说是更正确的方法。 (如果您根据建议创建一个带阴影的标记图标作为图标图像的一部分,阴影也是可点击的,并且这是不可取的)
createMarkerShadow = function(map, data) {
var latLng = new google.maps.LatLng(data.latitude, data.longitude);
var markerShadow = new google.maps.Marker({
clickable: false,
position: latLng,
map: map,
icon:{
url: '/frontend/img/icons/google-map-marker-shadow.svg',
//The size image file.
size: new google.maps.Size(225, 120),
//The point on the image to measure the anchor from. 0, 0 is the top left.
origin: new google.maps.Point(0, 0),
//The x y coordinates of the anchor point on the marker. e.g. If your map marker was a drawing pin then the anchor would be the tip of the pin.
anchor: new google.maps.Point(115, 82)
},
zIndex: (Math.round(latLng.lat()*-100000)<<5)-1
});
return markerShadow;
};
setMarkerShadows = function (map, locations, bound) {
for (var i = 0; i < locations.length; i++) {
var data = locations[i];
var markerShadow = createMarkerShadow(map, data);
bound.extend(markerShadow.getPosition());
}
};
bound = new google.maps.LatLngBounds();