2017-04-24 3 views
0

SVGブロック内で.png画像をGoogleマップマーカーとして使用できますか? 1つの画像をSVGフィルタで色分けして描画し、Googleマーカとして使用したい。私は、少なくとも今のところはフィルターなしで画像を使用しようとしていますGoogle maps markerとしてSVG(画像pngタグが入っている)

var svg = '<?xml version="1.0"?>' + 
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="200px" width="200px" viewBox="0 0 200 200">' + 
      '<image width="200" height="200" preserveAspectRatio="xMinYMin slice" xlink:href="{link.to.png.image}"/>' + 
      '</svg>'; 

var icon = { 
    url: 'data:image/svg+xml;charset=UTF-8,' + svg, 
    scaledSize: iconSize // scaled size 
}; 

そして、私は、SVGコードを取ると、ちょうどブラウザ経由でそれを使用しようとするならば、それはレンダリングOK

<?xml version="1.0"?> 
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="200px" width="200px" viewBox="0 0 200 200"> 
<image width="200" height="200" preserveAspectRatio="xMinYMin slice" xlink:href="{link.to.png.image}"/> 
</svg> 

しかし、 Googleマップで使用しようとしている間に何も表示されません

答えて

0

GoogleマップのSVGマーカーで、PNGを直接URLを使用して埋め込むことに成功しませんでした。私はhttpとhttpsの両方を試しました。

しかし、それはあなたがデータ-URIなどのバイナリファイルエンコードした場合に動作します。これらの回答PPLで

var svg = '<?xml version="1.0"?>' + 
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="200px" width="200px" viewBox="0 0 200 200">' + 
      '<image width="200" height="200" preserveAspectRatio="xMinYMin slice" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="/>' + 
      '</svg>'; 
+0

データURIに、この変換は、いくつかのツールで行うことができますボックス(これはJavascriptかsmthのような)? –

+0

@A.Khvorov:はい、それは別の質問です。あなたは[there](http://stackoverflow.com/questions/934012/get-image-data-in-javascript)を見て、受け入れられた答えに示唆されているようにKaiidoのコードを試してみるか、MuniRの答えをあなたのhtmlにこのイメージのための 'img'タグは必要ありません。 – GeH

+0

ありがとう! –

0

あなたに役立つ古い質問が見つかりました。

Here

var markercolor = "#fff"; 
var icon = { 
    path: "M-20,0a20,20 0 1,0 40,0a20,20 0 1,0 -40,0", 
    fillColor: markercolor, 
    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 
}); 

私は最善の方法は、online converterまたは類似した何かを.SVGであなたの.pngを変換することだと思います。 .pngが必要な理由はありますか?

+0

を座標を使用しての代わりに、ファイルをPNGです。私の画像へのパスは、データベースに保存されているので、ファイルシステムの下に保存されているPNGファイルをピックアップしてから、Googleのマーカーとして表示する必要がありますが、ポイントは、色は「カテゴリ」に依存し、私はSVGのフィルタタグを使用することに決めました –

+0

変換サイトはあなたにAPIがあることを示しました。これを使用してコード内で直接変換することができます。 –

+0

http://apiv2.online-convert.com/ –

関連する問題