我知道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无关。这会误导人们寻找比较。 –