我的SVG地图标记在IE11上消失了。它在Chrome,Firefox,Safari,IE9及其中可见。 10,但不是11.我已经上传了我当前代码的JSfiddle。我无法判断这是我还是谷歌地图的错误。
I've uploaded a JSfiddle of my current code
<html>
<head>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCyfFUUVxVyoCicnttJfj-w63wzfbTKV3Y&sensor=false">
</script>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map-canvas { height: 100% }
</style>
<script>
function initialize() {
var sanfrancisco = new google.maps.LatLng(37.78062,-122.397203);
var mapOptions = {
zoom: 18,
zIndex:0,
center: sanfrancisco,
mapTypeControl: true,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'usroadatlas']
},zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.SMALL
},
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
// var image = 'img/1p_marker3.png';
var image = 'http://firstperson.is/assets/img/contact/map_marker.svg';
var marker = new google.maps.Marker({
position: sanfrancisco,
map: map,
icon: image
});
var roadAtlasStyles = [
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "landscape",
"elementType": "geometry.fill",
"stylers": [
{ "color": "#003a70" }
]
},{
"featureType": "landscape",
"elementType": "geometry.stroke",
"stylers": [
{ "color": "#0075c9" }
]
},{
"featureType": "administrative.land_parcel",
"stylers": [
{ "visibility": "off" }
]
},{
"elementType": "labels.text.fill",
"stylers": [
{ "color": "#ffffff" }
]
},{
"elementType": "labels.text.stroke",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "road.arterial",
"elementType": "geometry",
"stylers": [
{ "color": "#0075c9" }
]
},{
"featureType": "road",
"elementType": "labels.text.fill",
"stylers": [
{ "color": "#ffffff" }
]
},{
"featureType": "road.local",
"elementType": "geometry",
"stylers": [
{ "color": "#0075c9" }
]
},{
"featureType": "road.highway",
"elementType": "geometry",
"stylers": [
{ "color": "#d0343a" }
]
},{
"featureType": "road.highway.controlled_access",
"elementType": "geometry",
"stylers": [
{ "color": "#ff4539" }
]
},{
"featureType": "transit.line",
"elementType": "geometry",
"stylers": [
{ "color": "#0075c9" }
]
},{
"featureType": "transit",
"elementType": "labels.text.fill",
"stylers": [
{ "color": "#ffffff" }
]
},{
"featureType": "poi",
"elementType": "labels.icon",
"stylers": [
{ "invert_lightness": true },
{ "hue": "#0077ff" }
]
},{
"featureType": "poi",
"elementType": "labels.text",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "poi",
"elementType": "labels",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "poi.park",
"elementType": "labels.text.fill",
"stylers": [
{ "visibility": "on" },
{"color":"#ffffff"}
]
},{
"featureType": "poi.park",
"elementType": "labels.icon",
"stylers": [
{ "visibility": "on" }
]
},{
"featureType": "poi.sports_complex",
"elementType": "labels.text.fill",
"stylers": [
{ "visibility": "on" },
{"color":"#ffffff"}
]
},{
"featureType": "administrative",
"elementType": "labels.text.fill",
"stylers": [
{ "color": "#ffffff" }
]
},{
"featureType": "administrative.neighborhood",
"elementType": "labels.text",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "administrative.province",
"elementType": "geometry",
"stylers": [
{ "visibility": "on" },
{ "weight": 0.9 }
]
}
];
var styledMapOptions = {
name: 'US Road Atlas'
};
var usRoadMapType = new google.maps.StyledMapType(
roadAtlasStyles, styledMapOptions);
map.mapTypes.set('usroadatlas', usRoadMapType);
map.setMapTypeId('usroadatlas');
// var transitLayer = new google.maps.TransitLayer();
// transitLayer.setMap(map);
};
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
答案 0 :(得分:92)
将scaledSize
添加到图片/图标,optimized: false
添加到标记中为我解决了这个问题。
var image = {
url: 'https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/svgs/fi-marker.svg',
scaledSize: new google.maps.Size(100, 100),
}
var marker = new google.maps.Marker({
position: sanfrancisco,
map: map,
optimized: false,
icon: image
});
答案 1 :(得分:5)
Google地图目前似乎不支持将SVG用于标记图像。但是,您可以使用Symbol对象来设置矢量标记图标。
有关详情,请参阅my answer至this question。
答案 2 :(得分:3)
我在一个项目中遇到了非常相似的问题,但是我处于无法编辑GM javascript的情况。
所以,这是我要分享的CSS方法:
#someGoogleMapsWrapperHere .gm-style img[src$='.svg'] {
width: 48px !important;
height: 48px !important;
}
这只会选择 img 元素,这些元素的 src 属性值以结尾' .svg '内部您的GM集成,并强迫他们使用 48px 的宽度和高度。
我通常会尽量避免使用这些!important 标签-但在这种情况下,它是强制性的,因为它必须推翻某些在IE11中定义宽度和高度为0px的内联样式。
答案 3 :(得分:1)
我不确定这是否会有所帮助:
明智地定义地图区域width
。例如:
#map-canvas { height: 100%; width: 100%; }
IE10是唯一抱怨开头没有以下行的人
<!DOCTYPE html>
一条评论:当你缩小时,标记很大,保持相同的大小。
没有帮助。在BrowserStack上运行代码(带有DOCTYPE行)我在控制台中收到了消息:
InvalidStateError (line 39)
此行不是来自脚本,因为如果我更改/删除某些内容,则消息是相同的。
答案 4 :(得分:1)
我遇到了同样的问题,因为我的ActiveX过滤器已经过检查。取消选中(属性 - 安全 - activeX过滤器),然后您可以再次看到您的标记。 发生错误是因为我使用的是geoxml3。