2017-01-18 11 views
0

私は、動的に生成されたsvg(example)を使用してbingマップ用のsvgプッシュピンを作成しようとしています。残念ながら、ピンをマップ上で正しくレンダリングしません。私は周囲を掘り下げて、bingマップAPIがsrcをbase64でエンコードされたイメージに設定していることを発見しました。データuri内のsvgがレンダリングされない

私はイメージソースをjsフィドルにコピーして、ビンマップAPIまたはブラウザに問題があるかどうかを確認しようとしました。 それは

<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50"> 
    <circle id="circle" cx="25" cy="25" r="25" /> 
</svg> 

のような単純な画像のために働いているが、もう少し複雑な画像が

<svg xmlns="http://www.w3.org/2000/svg" width="50" height="50"> 
    <defs> 
     <circle id="circle" cx="25" cy="25" r="25" /> 
    </defs> 
    <clipPath id="clip"></clipPath> 
    <image xlink:href="https://www.gravatar.com/avatar/08b73d0a58fc120a8cc8dc561d83b3d6.jpg?s=50&d=mm" x="0" y="0" height="50" width="50" /> 
</svg> 

JSフィドルレンダリングされません:私は貼り付ける場合は、両方の画像が細かいレンダリングさhttps://jsfiddle.net/w1yn9Lo8/6/

をそれらを直接HTMLに変換します。ここでの問題は何ですか?

+0

をキャンバスを使いますタグはBing Mapsではサポートされていません。マップコントロールはSVGを取り込み、すぐにHTMLキャンバスに描画します。そのようなイメージは読み込むチャンスがありません。 – rbrundritt

答えて

1

SVGファイルをデータURIとして使用する場合、外部参照はできません。したがって、データURIとしてラッピングSVGファイルをエンコードする前にjpgをデータURIとしてエンコードする必要があります。

+0

httpを使って手動でイメージを要求しなくてもいいですか? –

+0

は、グラバターがCORSをサポートしているかどうかによって、XMLHttpRequestを使用してjavascriptでそれを実行できるかどうかによって異なります。 –

0

問題は、SVG内の外部オブジェクトを使用していても、押された画像を描画できないということです。

私はSVGの代わりにキャンバスを使用します。すべてのキャンバスプリミティブを使用できます。

マイ溶液がある。Bing Maps API v8 - pushpin SVG URI image

  • プリロード画像(オブジェクトの配列)オブジェクトへ
  • SVG画像をキャンバスに画像および/または他のプリミティブを描画し、画鋲に
関連する問題