在Google地图中使用SVG作为标记?

vee*_*vee 10 svg google-maps google-maps-markers

我知道可以在谷歌地图上添加svg叠加层.我想知道你是否可以使用svg文件作为标记.我尝试设置它就像你的png或jpg文件,但没有任何显示.让我知道我是否应该发布我的代码,但我想我可能以错误的方式接近它.

谢谢.

Yuv*_*dam 19

在Google Maps API v3上,使用此代码(也可以处理调整大小)对我来说效果很好:

var marker = new google.maps.Marker({
  position: new google.maps.LatLng(lat, lng),
  icon: new google.maps.MarkerImage('/path/to/icon.svg',
    null, null, null, new google.maps.Size(64,64)),
  draggable: false,
  map: map
});
Run Code Online (Sandbox Code Playgroud)


小智 10

我有一个问题,但我在代码编辑器中查看了svg,它缺少一个定义的宽度和高度.

不工作

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    x="0px" y="0px" 
    viewBox="0 0 419.5 595.3" 
    enable-background="new 0 0 419.5 595.3"
    xml:space="preserve">
Run Code Online (Sandbox Code Playgroud)

干了

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    x="0px" y="0px" 
    width="33px" height="50px" 
    viewBox="0 0 419.5 595.3" 
    enable-background="new 0 0 419.5 595.3" 
    xml:space="preserve">
Run Code Online (Sandbox Code Playgroud)


Chr*_*cht 6

引用外部 SVG 时,您需要使用scaledSize代替size图标。请参阅下面的代码片段...

function initMap() {
  var springfield = {
    lat: 39.9354165,
    lng: -83.8215624
  };

  var homer = {
    url: 'http://thenewcode.com/assets/images/thumbnails/homer-simpson.svg',
    scaledSize: new google.maps.Size(64, 64),
    origin: new google.maps.Point(0, 0),
    anchor: new google.maps.Point(0, 32)
  }

  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: springfield
  });

  var marker = new google.maps.Marker({
    position: springfield,
    map: map,
    icon: homer,
    draggable: true
  });
}
Run Code Online (Sandbox Code Playgroud)
#map {
  height: 400px;
  width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<script async defer src="//maps.googleapis.com/maps/api/js?callback=initMap"></script>
<div id="map"></div>
Run Code Online (Sandbox Code Playgroud)