谷歌地图 - SVG标记被切断

时间:2017-05-30 10:11:34

标签: javascript html5 google-maps svg google-maps-api-3

为什么google.maps.Marker的svg图标会被切断? 我尝试了许多带有大小和scaledSize的组合...

var marker = new google.maps.Marker({
            position: new google.maps.LatLng({lat: el.lat, lng: el.lon}),
            icon: {
                url: "/images/icons/observation_" + el.rate + ".svg",
                size: new google.maps.Size(20, 20),
                origin: new google.maps.Point(0, 0),
                anchor: new google.maps.Point(10, 10),
                scaledSize: new google.maps.Size(20, 20)
            },
            zIndex: 6,
            map: map.map
        });

Svg图标应为20x20像素。

https://jsfiddle.net/d3v5huzr/

这是预览: Google Maps SVG markers

2 个答案:

答案 0 :(得分:3)

您必须设置svg元素的width和height属性,如下所示:

<svg height="40px" width="40px" ... >

https://jsfiddle.net/zvtnohyv/

答案 1 :(得分:2)

您可以使用events中的zoom_changed并添加事件监听器,以便在缩放时刷新标记图标

Fiddle Demo

以下代码

var map;

map = new google.maps.Map(document.getElementById('map'), {
  center: {
    lat: -34.397,
    lng: 150.644
  },
  zoom: 8
});
var icon = {
  url: "http://svgshare.com/i/1jz.svg",
}
var marker = new google.maps.Marker({
  position: new google.maps.LatLng({
    lat: -34.397,
    lng: 150.644
  }),
  icon: icon,
  /*icon: {
    url: "http://svgshare.com/i/1jz.svg",
    // size: new google.maps.Size(20, 20),
    // origin: new google.maps.Point(5, 5),
    // anchor: new google.maps.Point(10, 10),
    // scaledSize: new google.maps.Size(20, 20)
  },*/
  zIndex: 6,
  map: map
});
google.maps.event.addListener(map, 'zoom_changed', function() {
  marker.setIcon(icon);
});
相关问题