我知道谷歌地图有标记来突出地图中的某些点。我出于某种原因不习惯在我的网站上放置这种类型的地图并喜欢jvector地图效果。但是我无法弄清楚如何在jVectorMap中定义标记,是否有人知道如何在jVectorMap中定义标记并突出显示这些标记。我也很想知道如何使用纬度和经度到达jVector地图中的特定点。
感谢。
答案 0 :(得分:6)
现在你可以这样做,新版本的jVectorMap(0.2)引入了带markers
参数的功能。在这里查看演示http://jvectormap.com/examples/markers-world/。
答案 1 :(得分:3)
jVectorMap世界地图使用van der Grinten投影。可以在此处找到从/转换为地图的公式 Wikipedia和Wolfram文章。
您需要将其缩放到地图的大小和尺寸。偏移,给定上面的公式将长/纬(-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 };
}
答案 2 :(得分:0)
jvector地图就是一个矢量地图。您需要在lat / lng和向量空间之间创建某种类型的对应关系(例如:1px = 1deg)。这将要么需要自定义地图,要么对其进行精确测量以建立比例。更不用说你需要确保使用mercator projection,以便平行线甚至意味着它们的意思;)
编辑:如果你有谷歌地图的问题我建议使用像leaflet这样的替代方案,不要试图扩展jVector地图来做两件事(绘图点,并按比例绘制)它不是意思是做。