Można to zrobić za pomocą kombinacji Jvectormap, Jvectormaps coordinates converter method latLngToPoint()
i warstwy SVG na szczycie Jvectormap. W rzeczywistości użycie SVG.js jako warstwy na wierzchu Jvectormap pozwala zrobić praktycznie wszystko, co można zrobić z SVG, zastępując punkty współrzędnymi długości i szerokości geograficznej.
Musisz wczytać plik Jvectormap, plik mapy Jvectormap, svg.js i svg.path.js (patrz https://svgdotjs.github.io) w nagłówku strony. Musisz również utworzyć dwa elementy div w jednym, które mogą nakładać się na ustawienia bezwzględne CSS.
<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>
Utwórz tablicę wskaźników z szerokości i długości geograficznej na rysowanie linii do iz na mapie:
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]}
];
Następnie skonfigurować Jvectormap wykorzystaniem markerów powyżej:
var map = $('#map').vectorMap({
map: 'us_aea_en',
zoomMin: 1,
zoomMax: 1,
markers: markerArray
});
Na koniec przypisz swoją mapę jako obiekt, utwórz swoją warstwę SVG, przekształć współrzędne długie na punkty w dziale:
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);
Większość tego JS powinna przejść do wywołania $(function()
lub bloku $(document).ready(function()
do uruchomienia.
Widać to JSFiddle więcej szczegółów: http://jsfiddle.net/ruzel/V8dyd/
Zastrzeżenie: Nie wiem co się dzieje z powiększaniem; jest wyłączony dla tego przykładu.