我知道Google地圖有標記可突出顯示地圖中的某些點。我出於某種原因不習慣將這種類型的地圖放在我的網站上,並熱愛jvector地圖效果。但我無法弄清楚如何在jVectorMap中定義標記,是否有人知道如何在jVectorMap中定義標記並突出顯示這些點。我也很想知道如何使用經度和緯度到達jVector Map中的某個點。如何使用jVector地圖插件查找緯度和經度
謝謝。
我知道Google地圖有標記可突出顯示地圖中的某些點。我出於某種原因不習慣將這種類型的地圖放在我的網站上,並熱愛jvector地圖效果。但我無法弄清楚如何在jVectorMap中定義標記,是否有人知道如何在jVectorMap中定義標記並突出顯示這些點。我也很想知道如何使用經度和緯度到達jVector Map中的某個點。如何使用jVector地圖插件查找緯度和經度
謝謝。
現在你可以做到這一點,jVectorMap的新版本(0.2)引入了這樣的功能,以markers
參數。在這裏查看演示http://jvectormap.com/examples/markers-world/。
jvector地圖就是這樣一個矢量地圖。你需要在lat/lng和你的向量空間之間創建一些類型的對應關係(例如:1px = 1deg)。這要麼需要定製地圖,要麼對其進行一些精確的測量來確定比例尺。更何況,你需要確保你使用的是mercator projection,這樣平行線甚至意味着你認爲他們的意思;)
編輯:如果你有谷歌地圖的問題,我會建議使用替代像leaflet,不是試圖擴展jVector地圖來做兩件事情(繪圖點,並按比例繪製),它並不打算做。
jVectorMap世界地圖使用van der Grinten投影。可以找到這個地圖轉換公式的公式。這篇文章可以找到這個 Wikipedia和Wolfram的文章。
由於上述公式將long/lat(-180到180度)投影到(-1到+1)笛卡爾網格,因此您需要將其縮放到您的地圖尺寸&偏移量。
另外,公式中的角度應該是弧度而不是度數。
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 };
}
你可以編輯標題,這個問題與谷歌地圖vs jvectormap無關。這會誤導人們尋找比較。 –