6

Wiem, że mapy google mają znaczniki do podświetlenia niektórych punktów na mapie. Z jakiegoś powodu nie jest mi wygodnie umieszczać tego rodzaju mapę na mojej stronie i uwielbiam efekty mapy jvector. Ale nie jestem w stanie wymyślić, jak zdefiniować znaczniki w jVectorMap, czy ktoś ma wskazówkę, jak zdefiniować znaczniki w jVectorMap i podświetlić te punkty. Chciałbym również wiedzieć, w jaki sposób dotarłbyś do określonego punktu w JVector Map, używając szerokości i długości geograficznej.Jak zlokalizować szerokość i długość geograficzną za pomocą wtyczki mapy jVector

Dzięki.

+0

Czy możesz edytować tytuł, pytanie nie jest związane z mapami google vs jvectormap. Spowoduje to wprowadzanie w błąd osób szukających porównania. –

Odpowiedz

5

Teraz można to zrobić, nowa wersja jVectorMap (0,2) wprowadza taką funkcję z markers parametru. Sprawdź demo tutaj http://jvectormap.com/examples/markers-world/.

+0

Dzięki, czy generujesz znaczniki jako svg, czy nie możemy dodać własnych znaczników jako dostosowywanych obrazów. – defau1t

+0

Niestety nie w aktualnej wersji. – bjornd

0

Mapa jvector jest właśnie taka, mapa wektorowa. Będziesz musiał stworzyć pewien rodzaj zależności między lat/lng a twoją przestrzenią wektorową (np .: 1px = 1deg). Będzie to wymagało dostosowania mapy lub wykonania dokładnych pomiarów w celu ustalenia skali. Nie wspominając już o tym, że musisz być pewien, że używasz mercator projection, więc linie równoległe oznaczają nawet to, co myślisz, że mają na myśli;)

EDYCJA: Jeśli masz problem z mapami google, polecam użycie alternatywy jak leaflet, nie próbując przedłużyć mapy jVector, aby zrobić dwie rzeczy (punkty fabuły i narysować na skali), które nie były przeznaczone.

3

Mapa świata jVectorMap wykorzystuje projekcję van der Grintena. Wzór do konwersji z/do mapy można znaleźć w tym artykule: Wikipedia i Wolfram.

Musisz przeskalować go do rozmiaru mapy o przesunięcie &, biorąc pod uwagę powyższy wzór wyświetlający długi/lat (-180 do 180 stopni) do siatki kartezjańskiej (-1 do +1).

Kąty w formule powinny być w radianach, a nie w stopniach.

function vanDerGrinten(lat, lng) { 
    lat = lat * Math.PI/180; 
    lng = lng * Math.PI/180; 
    var lng0 = 0; 
    var A1 = 0.5 * Math.abs((Math.PI/(lng - lng0) - (lng - lng0)/Math.PI)); 
    var phi = Math.asin(Math.abs(2 * lat/Math.PI)); 
    var G = Math.cos(phi)/(Math.sin(phi) + Math.cos(phi) - 1); 
    P = G * (2/Math.sin(phi) - 1); 
    Q = A1 * A1 + G; 
    x0 = A1 * A1 * (G - P * P) * (G - P * P) - (P * P + A1 * A1) * (G * G - P * P); 
    x1 = (A1 * (G - P * P) + Math.sqrt(x0)); 
    x2 = (P * P + A1 * A1); 
    x = sgn(lng - lng0) * Math.PI * x1/x2; 
    y = sgn(lat) * Math.PI * Math.abs(P * Q - A1 * Math.sqrt((A1 * A1 + 1) * (P * P + A1 * A1) - Q * Q))/(P * P + A1 * A1); 
    return { _x: x, _y: y }; 
} 
Powiązane problemy