Cách sử dụng điểm đánh dấu SVG trong Google Maps API v3


91

Tôi có thể sử dụng image.svg đã chuyển đổi của mình làm biểu tượng bản đồ google không. Tôi đang chuyển đổi hình ảnh png của mình thành svg và tôi muốn sử dụng biểu tượng này như biểu tượng bản đồ google có thể xoay được. Tôi đã cố gắng sử dụng biểu tượng bản đồ google nhưng tôi muốn có một biểu tượng như xe hơi, người đàn ông, v.v. Đó là lý do tại sao tôi chuyển đổi một số tệp png của mình thành svg, giống như trang web ví dụ này, anh ấy sử dụng những gì cho những http: / /www.goprotravelling.com/


1
Đối với những người đang tìm kiếm câu hỏi tương tự này: giải pháp tương thích một phần IE 9+ tại đây: stackoverflow.com/a/30890373/634386 sẽ đặt SVG trong DOM thay vì trên canvas để bạn có thể thao tác với CSS3 sau (nếu bạn ' đang tìm cách xoay phần tử đó một cách cụ thể).
Mike Kormendy

Câu trả lời:


144

Bạn có thể hiển thị biểu tượng của mình bằng ký hiệu Đường dẫn SVG .

Xem tài liệu của Google để biết thêm thông tin.

Đây là một ví dụ cơ bản:

var icon = {

    path: "M-20,0a20,20 0 1,0 40,0a20,20 0 1,0 -40,0",
    fillColor: '#FF0000',
    fillOpacity: .6,
    anchor: new google.maps.Point(0,0),
    strokeWeight: 0,
    scale: 1
}

var marker = new google.maps.Marker({
    position: event.latLng,
    map: map,
    draggable: false,
    icon: icon
});

Dưới đây là một ví dụ làm việc về cách hiển thị và chia tỷ lệ biểu tượng SVG của điểm đánh dấu:

Bản demo JSFiddle

Biên tập:

Một ví dụ khác ở đây với một biểu tượng phức tạp:

Bản demo JSFiddle

Chỉnh sửa 2:

Và đây là cách bạn có thể có tệp SVG làm biểu tượng:

Bản demo JSFiddle


, rất khó để làm svg xe hơi.
jemz

Bạn có ảnh SVG của chiếc xe mà bạn muốn không? Sau đó, chỉ cần mở nó bằng một trình soạn thảo văn bản và tìm đường dẫn trong đó!
MrUpsidown

3
SVG thường được sử dụng cho các biểu tượng và các ký hiệu khác. Một màu. Nó chỉ là một đường dẫn, giống như một chữ cái trong phông chữ. Ưu điểm là bạn có thể dễ dàng mở rộng quy mô, xoay và thay đổi màu sắc của nó mà không làm giảm chất lượng. Đó là một hình dạng vector.
MrUpsidown

1
Đó là một trong những điều hữu ích nhất mà tôi đọc được trong năm nay! Cảm ơn nhiều
Jonathan La'Fey

2
@MrUpsidown Nhưng tất nhiên SVG đang hoạt động tốt bên ngoài bản đồ - chưa bao giờ gặp sự cố ở đó. Nó liên quan đến trục trặc trong hỗ trợ của Google cho SVG trong kết xuất canvas của họ - có thể tắt tính năng này để thay vào đó, SVG được chèn vào DOM. Sau đó, có vấn đề với kích thước được tính toán của các điểm đánh dấu, có một số thuộc tính trong việc triển khai cho các điểm đánh dấu bản đồ có thể buộc kích thước. Tôi đã tìm thấy một giải pháp từng phần ở đây: stackoverflow.com/a/30890373/634386
Mike Kormendy

68

Nếu bạn cần một svg đầy đủ không chỉ một đường dẫn và bạn muốn nó có thể sửa đổi được ở phía máy khách (ví dụ: thay đổi văn bản, ẩn chi tiết, ...), bạn có thể sử dụng một 'URL' dữ liệu thay thế có kèm theo svg:

var svg = '<svg width="400" height="110"><rect width="300" height="100" /></svg>';
icon.url = 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(svg);

JavaScript (Firefox) btoa () được sử dụng để lấy mã hóa base64 từ văn bản SVG. Bạn cũng có thể sử dụng http://dopiaza.org/tools/datauri/index.php để tạo URL dữ liệu cơ sở.

Đây là một ví dụ đầy đủ về jsfiddle :

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
    </head>
    <body>
        <div id="map" style="width: 500px; height: 400px;"></div>
        <script type="text/javascript">
            var map = new google.maps.Map(document.getElementById('map'), {
                zoom: 10,
                center: new google.maps.LatLng(-33.92, 151.25),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            });

            var template = [
                '<?xml version="1.0"?>',
                    '<svg width="26px" height="26px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg">',
                        '<circle stroke="#222" fill="{{ color }}" cx="50" cy="50" r="35"/>',
                    '</svg>'
                ].join('\n');
            var svg = template.replace('{{ color }}', '#800');

            var docMarker = new google.maps.Marker({
                position: new google.maps.LatLng(-33.92, 151.25),
                map: map,
                title: 'Dynamic SVG Marker',
                icon: { url: 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg), scaledSize: new google.maps.Size(20, 20) },
optimized: false
            });

            var docMarker = new google.maps.Marker({
                position: new google.maps.LatLng(-33.95, 151.25),
                map: map,
                title: 'Dynamic SVG Marker',
                icon: { url: 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(svg), scaledSize: new google.maps.Size(20, 20) },
optimized: false
            });
        </script>
    </body>
</html>

Thông tin bổ sung có thể được tìm thấy ở đây .

Tránh mã hóa base64:

Để tránh mã hóa base64, bạn có thể thay thế 'data:image/svg+xml;charset=UTF-8;base64,' + btoa(svg)bằng'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg)

Điều này sẽ hoạt động với các trình duyệt hiện đại xuống IE9. Lợi thế làencodeURIComponent là một hàm js mặc định và có sẵn trong tất cả các trình duyệt hiện đại. Bạn cũng có thể nhận được các liên kết nhỏ hơn nhưng bạn cần kiểm tra điều này và cân nhắc sử dụng 'thay vì "trong svg của mình.

Cũng thấy Tối ưu hóa SVG trong URI dữ liệu để biết thêm thông tin.

Hỗ trợ IE: Để hỗ trợ SVG Markers trong IE, người ta cần hai khả năng thích ứng nhỏ như được mô tả ở đây: SVG Markers trong IE . Tôi đã cập nhật mã ví dụ để hỗ trợ IE.


3
Thông tin tốt, nhưng lưu ý nhanh rằng mã hóa base64 không thực sự cần thiết hoặc mong muốn. Thay vào đó, bạn có thể sử dụng mã hóa svg trực tiếp trong URI dữ liệu, chẳng hạn như data:image/svg+xml;utf8,. Thông tin thêm: css-tricks.com/probably-dont-base64-svg
Josh từ Qaribou

Bạn nói đúng, sẽ thật tuyệt nếu chúng ta có thể tránh mã hóa base64. Bạn đã làm như thế nào, bạn có thể cung cấp một ví dụ? Nếu tôi chỉ thêm mã svg vào URI, nó không hoạt động với một số ký tự như #bạn đã sử dụng mã hóa URL?
Tom

Tôi nên đề cập đến nó được mã hóa utf8; svg là định dạng. Liên kết được cung cấp có một số ví dụ.
Josh từ Qaribou

1
Làm thế nào để sử dụng xoay hình ảnh svg bằng cách sử dụng này?
Somnath Kharat

Không phải tất cả chúng ta đều yêu thích IE;) Như thường lệ, nó yêu cầu một số công việc bổ sung để làm cho nó hoạt động trên tất cả các trình duyệt. Tôi đã điều chỉnh ví dụ để hỗ trợ IE, hy vọng điều này sẽ giúp.
Tom

30

Tôi biết bài viết này hơi cũ, nhưng tôi đã thấy quá nhiều thông tin xấu về điều này tại SO khiến tôi có thể hét lên. Vì vậy, tôi phải ném hai xu của mình vào với một cách tiếp cận hoàn toàn khác mà tôi biết là hiệu quả, vì tôi sử dụng nó một cách đáng tin cậy trên nhiều bản đồ. Bên cạnh đó, tôi tin rằng OP cũng muốn có khả năng xoay điểm đánh dấu mũi tên xung quanh điểm bản đồ, điều này khác với việc xoay biểu tượng xung quanh trục x, y của chính nó, điều này sẽ thay đổi vị trí điểm đánh dấu mũi tên chỉ đến trên bản đồ.

Đầu tiên, hãy nhớ rằng chúng ta đang chơi với Google maps và SVG, vì vậy chúng ta phải xác định cách thức mà Google triển khai việc triển khai SVG cho các điểm đánh dấu (hoặc thực sự là các biểu tượng). Google đặt neo của nó cho hình ảnh điểm đánh dấu SVG ở 0,0 KHÔNG PHẢI là góc trên bên trái của khung xem SVG. Để giải quyết vấn đề này, bạn phải vẽ hình ảnh SVG của mình khác đi một chút để cung cấp cho Google những gì nó muốn ... vâng, câu trả lời là ở cách bạn thực sự tạo đường dẫn SVG trong trình chỉnh sửa SVG của mình (Illustrator, Inkscape, v.v. .).

Bước đầu tiên là thoát khỏi viewBox. Điều này có thể được thực hiện bằng cách đặt viewBox trong XML của bạn thành 0 ... đúng vậy, chỉ là một số 0 thay vì bốn đối số thông thường cho viewBox. Thao tác này sẽ tắt hộp chế độ xem (và vâng, điều này đúng về mặt ngữ nghĩa). Bạn có thể sẽ nhận thấy kích thước hình ảnh của bạn nhảy vọt ngay lập tức khi bạn làm điều này, và đó là bởi vì svg không còn cơ sở (khung xem) để chia tỷ lệ hình ảnh. Vì vậy, chúng tôi tạo tham chiếu đó trực tiếp, bằng cách đặt chiều rộng và chiều cao thành số pixel thực tế mà bạn muốn hình ảnh của mình nằm trong trình soạn thảo XML của trình soạn thảo SVG của bạn.

Bằng cách đặt chiều rộng và chiều cao của hình ảnh svg trong trình soạn thảo XML, bạn tạo đường cơ sở để chia tỷ lệ hình ảnh và kích thước này trở thành giá trị 1 cho các thuộc tính tỷ lệ điểm đánh dấu theo mặc định. Bạn có thể thấy lợi thế của điều này đối với tỷ lệ động của điểm đánh dấu.

Bây giờ bạn đã có kích thước hình ảnh của mình, hãy di chuyển hình ảnh cho đến khi phần hình ảnh bạn muốn có làm mỏ neo nằm trên 0,0 tọa độ của trình chỉnh sửa svg. Khi bạn đã thực hiện xong việc này, hãy sao chép giá trị của thuộc tính d của đường dẫn svg. Bạn sẽ nhận thấy khoảng một nửa số là số âm, đó là kết quả của việc căn chỉnh điểm neo của bạn cho 0,0 của hình ảnh thay vì viewBox.

Sử dụng kỹ thuật này sau đó sẽ cho phép bạn xoay điểm đánh dấu một cách chính xác, xung quanh điểm vĩ độ và điểm l trên bản đồ. Đây là cách đáng tin cậy duy nhất để liên kết điểm trên điểm đánh dấu svg mà bạn muốn với vĩ độ và độ dài của vị trí điểm đánh dấu.

Tôi đã cố gắng tạo JSFiddle cho việc này , nhưng có một số lỗi trong việc triển khai ở đó, một trong những lý do khiến tôi không thích mã được diễn giải lại. Vì vậy, thay vào đó, tôi đã bao gồm một ví dụ hoàn toàn độc lập bên dưới mà bạn có thể thử, điều chỉnh và sử dụng làm tài liệu tham khảo. Đây là mã tương tự mà tôi đã thử tại JSFiddle nhưng không thành công, nhưng nó chạy qua Firebug mà không có tiếng kêu.

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <meta name="viewport"  content="width=device-width, initial-scale=1" />
    <meta name="author"    content="Drew G. Stimson, Sr. ( Epiphany )" />
    <title>Create Draggable and Rotatable SVG Marker</title>
    <script src="http://maps.googleapis.com/maps/api/js?sensor=false"> </script>
    <style type="text/css">
      #document_body {
        margin:0;
        border: 0;
        padding: 10px;
        font-family: Arial,sans-serif;
        font-size: 14px;
        font-weight: bold;
        color: #f0f9f9;
        text-align: center;
        text-shadow: 1px 1px 1px #000;
        background:#1f1f1f;
      }
      #map_canvas, #rotation_control {
        margin: 1px;
        border:1px solid #000;
        background:#444;
        -webkit-border-radius: 4px;
           -moz-border-radius: 4px;
                border-radius: 4px;
      }
      #map_canvas { 
        width: 100%;
        height: 360px;
      }
      #rotation_control { 
        width: auto;
        padding:5px;
      }
      #rotation_value { 
        margin: 1px;
        border:1px solid #999;
        width: 60px;
        padding:2px;
        font-weight: bold;
        color: #00cc00;
        text-align: center;
        background:#111;
        border-radius: 4px;
      }
</style>

<script type="text/javascript">
  var map, arrow_marker, arrow_options;
  var map_center = {lat:41.0, lng:-103.0};
  var arrow_icon = {
    path: 'M -1.1500216e-4,0 C 0.281648,0 0.547084,-0.13447 0.718801,-0.36481 l 17.093151,-22.89064 c 0.125766,-0.16746 0.188044,-0.36854 0.188044,-0.56899 0,-0.19797 -0.06107,-0.39532 -0.182601,-0.56215 -0.245484,-0.33555 -0.678404,-0.46068 -1.057513,-0.30629 l -11.318243,4.60303 0,-26.97635 C 5.441639,-47.58228 5.035926,-48 4.534681,-48 l -9.06959,0 c -0.501246,0 -0.906959,0.41772 -0.906959,0.9338 l 0,26.97635 -11.317637,-4.60303 c -0.379109,-0.15439 -0.812031,-0.0286 -1.057515,0.30629 -0.245483,0.33492 -0.244275,0.79809 0.0055,1.13114 L -0.718973,-0.36481 C -0.547255,-0.13509 -0.281818,0 -5.7002158e-5,0 Z',
    strokeColor: 'black',
    strokeOpacity: 1,
    strokeWeight: 1,
    fillColor: '#fefe99',
    fillOpacity: 1,
    rotation: 0,
    scale: 1.0
  };

function init(){
  map = new google.maps.Map(document.getElementById('map_canvas'), {
    center: map_center,
    zoom: 4,
    mapTypeId: google.maps.MapTypeId.HYBRID
  });
  arrow_options = {
    position: map_center,
    icon: arrow_icon,
    clickable: false,
    draggable: true,
    crossOnDrag: true,
    visible: true,
    animation: 0,
    title: 'I am a Draggable-Rotatable Marker!' 
  };
  arrow_marker = new google.maps.Marker(arrow_options);
  arrow_marker.setMap(map);
}
function setRotation(){
  var heading = parseInt(document.getElementById('rotation_value').value);
  if (isNaN(heading)) heading = 0;
  if (heading < 0) heading = 359;
  if (heading > 359) heading = 0;
  arrow_icon.rotation = heading;
  arrow_marker.setOptions({icon:arrow_icon});
  document.getElementById('rotation_value').value = heading;
}
</script>
</head>
<body id="document_body" onload="init();">
  <div id="rotation_control">
    <small>Enter heading to rotate marker&nbsp;&nbsp;&nbsp;&nbsp;</small>
    Heading&deg;<input id="rotation_value" type="number" size="3" value="0" onchange="setRotation();" />
    <small>&nbsp;&nbsp;&nbsp;&nbsp;Drag marker to place marker</small>
    </div>
    <div id="map_canvas"></div>
</body>
</html>

Đây chính xác là những gì Google làm cho một số ký hiệu có sẵn trong lớp SYMBOL của API Maps, vì vậy nếu điều đó không thuyết phục được bạn ... Dù sao, tôi hy vọng điều này sẽ giúp bạn tạo và thiết lập chính xác điểm đánh dấu SVG cho Google maps endevours của bạn.


2
Nice câu trả lời, tôi đã thực hiện một fiddle làm việc của mã của bạn cho mọi người thấy jsfiddle.net/v2pjfp7r
Rob Schmuecker

"<3" Đây là thông tin cần thiết phải có trong tài liệu google.
user7653815

12

Có, bạn có thể sử dụng tệp .svg cho biểu tượng giống như bạn có thể .png hoặc định dạng tệp hình ảnh khác. Chỉ cần đặt url của biểu tượng vào thư mục chứa tệp .svg. Ví dụ:

var icon = {
        url: 'path/to/images/car.svg',
        size: new google.maps.Size(sizeX, sizeY),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(sizeX/2, sizeY/2)
};

var marker = new google.maps.Marker({
        position: event.latLng,
        map: map,
        draggable: false,
        icon: icon
});

1
Đối tượng biểu tượng bạn đang hiển thị dành cho điểm đánh dấu tiêu chuẩn, không phải là điểm đánh dấu SVG. Một điểm đánh dấu svg sử dụng các thuộc tính của lớp ký hiệu, sau đó được gán làm thuộc tính biểu tượng của lớp đánh dấu. (xem đối tượng biểu tượng MrUpsidown để tham khảo chính xác ...)
Epiphany

2
Điều này cũng sẽ bị hỏng nếu SVG có nhiều hơn một đường dẫn 'd' (thường được liên kết với nhiều hơn một lớp trong hình ảnh svg).
Epiphany

2
Lưu ý rằng tệp svg của bạn nên đặt các kích thước của biểu tượng một cách rõ ràng như vậy: width="33px" height="50px"- xem stackoverflow.com/a/21783089/165673
Yarin

10

Mọi thứ đang diễn ra tốt hơn, ngay bây giờ bạn có thể sử dụng tệp SVG.

        marker = new google.maps.Marker({
            position: {lat: 36.720426, lng: -4.412573},
            map: map,
            draggable: true,
            icon: "img/tree.svg"
        });

1
không cho phép quay
Matt Westlake

5

Như đã được đề cập bởi những người khác trong chủ đề này, đừng quên đặt các thuộc tính chiều rộng và chiều cao trong svg một cách rõ ràng như sau:

<svg id="some_id" data-name="some_name" xmlns="http://www.w3.org/2000/svg"
     viewBox="0 0 26 42"
     width="26px" height="42px">

nếu bạn không làm điều đó thì không có thao tác js nào có thể giúp bạn vì gmaps sẽ không có hệ quy chiếu và luôn sử dụng kích thước chuẩn.

(Tôi biết nó đã được đề cập trong một số nhận xét, nhưng chúng rất dễ bỏ sót. Thông tin này đã giúp tôi trong nhiều trường hợp khác nhau)


1

ĐỒNG Ý! Tôi đã sớm thực hiện việc này trên web của mình, tôi thử hai cách để tạo điểm đánh dấu bản đồ google tùy chỉnh, mã chạy này sử dụng canvg.js là khả năng tương thích tốt nhất cho trình duyệt. Mã nhận xét không hỗ trợ IE11 urrently.

var marker;
var CustomShapeCoords = [16, 1.14, 21, 2.1, 25, 4.2, 28, 7.4, 30, 11.3, 30.6, 15.74, 25.85, 26.49, 21.02, 31.89, 15.92, 43.86, 10.92, 31.89, 5.9, 26.26, 1.4, 15.74, 2.1, 11.3, 4, 7.4, 7.1, 4.2, 11, 2.1, 16, 1.14];

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 13,
    center: {
      lat: 59.325,
      lng: 18.070
    }
  });
  var markerOption = {
    latitude: 59.327,
    longitude: 18.067,
    color: "#" + "000",
    text: "ha"
  };
  marker = createMarker(markerOption);
  marker.setMap(map);
  marker.addListener('click', changeColorAndText);
};

function changeColorAndText() {
  var iconTmpObj = createSvgIcon( "#c00", "ok" );
  marker.setOptions( {
                icon: iconTmpObj
            } );
};

function createMarker(options) {
  //IE MarkerShape has problem
  var markerObj = new google.maps.Marker({
    icon: createSvgIcon(options.color, options.text),
    position: {
      lat: parseFloat(options.latitude),
      lng: parseFloat(options.longitude)
    },
    draggable: false,
    visible: true,
    zIndex: 10,
    shape: {
      coords: CustomShapeCoords,
      type: 'poly'
    }
  });

  return markerObj;
};

function createSvgIcon(color, text) {
  var div = $("<div></div>");

  var svg = $(
    '<svg width="32px" height="43px"  viewBox="0 0 32 43" xmlns="http://www.w3.org/2000/svg">' +
    '<path style="fill:#FFFFFF;stroke:#020202;stroke-width:1;stroke-miterlimit:10;" d="M30.6,15.737c0-8.075-6.55-14.6-14.6-14.6c-8.075,0-14.601,6.55-14.601,14.6c0,4.149,1.726,7.875,4.5,10.524c1.8,1.801,4.175,4.301,5.025,5.625c1.75,2.726,5,11.976,5,11.976s3.325-9.25,5.1-11.976c0.825-1.274,3.05-3.6,4.825-5.399C28.774,23.813,30.6,20.012,30.6,15.737z"/>' +
    '<circle style="fill:' + color + ';" cx="16" cy="16" r="11"/>' +
    '<text x="16" y="20" text-anchor="middle" style="font-size:10px;fill:#FFFFFF;">' + text + '</text>' +
    '</svg>'
  );
  div.append(svg);

  var dd = $("<canvas height='50px' width='50px'></cancas>");

  var svgHtml = div[0].innerHTML;

  canvg(dd[0], svgHtml);

  var imgSrc = dd[0].toDataURL("image/png");
  //"scaledSize" and "optimized: false" together seems did the tricky ---IE11  &&  viewBox influent IE scaledSize
  //var svg = '<svg width="32px" height="43px"  viewBox="0 0 32 43" xmlns="http://www.w3.org/2000/svg">'
  //    + '<path style="fill:#FFFFFF;stroke:#020202;stroke-width:1;stroke-miterlimit:10;" d="M30.6,15.737c0-8.075-6.55-14.6-14.6-14.6c-8.075,0-14.601,6.55-14.601,14.6c0,4.149,1.726,7.875,4.5,10.524c1.8,1.801,4.175,4.301,5.025,5.625c1.75,2.726,5,11.976,5,11.976s3.325-9.25,5.1-11.976c0.825-1.274,3.05-3.6,4.825-5.399C28.774,23.813,30.6,20.012,30.6,15.737z"/>'
  //    + '<circle style="fill:' + color + ';" cx="16" cy="16" r="11"/>'
  //    + '<text x="16" y="20" text-anchor="middle" style="font-size:10px;fill:#FFFFFF;">' + text + '</text>'
  //    + '</svg>';
  //var imgSrc = 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg);

  var iconObj = {
    size: new google.maps.Size(32, 43),
    url: imgSrc,
    scaledSize: new google.maps.Size(32, 43)
  };

  return iconObj;
};
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>Your Custom Marker </title>
  <style>
    /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
    #map {
      height: 100%;
    }
    /* Optional: Makes the sample page fill the window. */
    html,
    body {
      height: 100%;
      margin: 0;
      padding: 0;
    }
  </style>
</head>

<body>
  <div id="map"></div>
    <script src="https://canvg.github.io/canvg/canvg.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap"></script>
</body>

</html>


-4

Bạn cần phải vượt qua optimized: false.

Ví dụ

var img = { url: 'img/puff.svg', scaledSide: new google.maps.Size(5, 5) };
new google.maps.Marker({position: this.mapOptions.center, map: this.map, icon: img, optimized: false,});

Không vượt qua optimized: false, svg của tôi xuất hiện như một hình ảnh tĩnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.