jvectormap を使用して、地図上のマーカー間に線を引くことができるかどうかを確認しようとしています。
ここに私が達成しようとしていることのアイデアがあります: http://i.imgur.com/p1Zypv3.gif
これが実現可能かどうか、誰かが私にヒントを与えることができますか?
ご意見をお待ちしております。
jvectormap を使用して、地図上のマーカー間に線を引くことができるかどうかを確認しようとしています。
ここに私が達成しようとしていることのアイデアがあります: http://i.imgur.com/p1Zypv3.gif
これが実現可能かどうか、誰かが私にヒントを与えることができますか?
ご意見をお待ちしております。
これは、Jvectormap、Jvectormaps 座標コンバーター メソッドlatLngToPoint()
、および Jvectormap 上の SVG レイヤーの組み合わせで実行できます。実際、SVG.js を Jvectormap の最上位レイヤーとして利用すると、ポイントを緯度経度座標に置き換えながら、SVG で実行できるほぼすべてのことを実行できます。
Jvectormap、Jvectormap マップ ファイル、svg.js、および svg.path.js プラグイン ( https://svgdotjs.github.ioを参照) をページ ヘッダーにロードする必要があります。また、CSS 絶対設定とオーバーラップできる 2 つの div を 1 つに作成する必要があります。
<div id="mapContainer" style="position:relative">
<div id="map" style="position:absolute;top:0px;left:0px"></div>
<div id="svgMapOverlay" style="position:absolute;top:0px;left:0px"></div>
</div>
緯度と経度を含むマーカーの配列を作成して、地図上に出入りする線を描画します。
var markerArray = [
{name:'Houston', latLng:[29.761993,-95.369568]},
{name:'New York', latLng:[40.710833,-74.002533]},
{name:'Kansas City', latLng:[39.115145,-94.633484]}
];
次に、上記のマーカーを使用して Jvectormap を設定します。
var map = $('#map').vectorMap({
map: 'us_aea_en',
zoomMin: 1,
zoomMax: 1,
markers: markerArray
});
最後に、マップをオブジェクトとして呼び出し、SVG レイヤーを作成し、緯度経度座標を div 内のポイントに変換します。
var map = $('#map').vectorMap('get', 'mapObject');
var draw = SVG('svgMapOverlay').size(660, 400);
var coords1 = map.latLngToPoint(markerArray[0].latLng[0],markerArray[0].latLng[1]);
var coords2 = map.latLngToPoint(markerArray[1].latLng[0],markerArray[1].latLng[1]);
draw.path().attr({ fill: 'none',stroke: '#c00', 'stroke-width': 2 }).M(coords1.x, coords1.y).L(coords2.x, coords2.y);
この JS のほとんどは、起動のために$(function()
呼び出しまたはブロックに入る必要があります。$(document).ready(function()
詳細については、この JSFiddle を参照してください: http://jsfiddle.net/ruzel/V8dyd/
免責事項: ズームで何が起こるかわかりません。この例ではオフになっています。
var markerIndex=1;
var markerCoords=[];
latLng={72,62};
markersCoords[markerIndex] = latLng;
map.addMarker(markerIndex, {latLng: [latLng.lat, latLng.lng]});
markerIndex += 1;