jVectorMapの世界地図はvan der Grinten投影を使用しています。マップを変換する数式は、 WikipediaとWolframという記事で確認できます。
上記の式が-1/-1から+1のデカルトグリッドに長い/緯度(-180〜180度)を投影している場合は、地図のサイズを&オフセットにスケーリングする必要があります。
また、数式の角度は度ではなく、ラジアンである必要があります。
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 };
}
タイトルを編集できますか?質問はgoogle maps vs jvectormapとは関係ありません。これは、比較を探している人を誤解させるでしょう。 –