【发布时间】:2014-04-24 10:25:12
【问题描述】:
我的问题有点棘手,如果我的问题根本不清楚,请道歉。
我使用 googleMap v3 API。用户可以在地图上创建一个标记,如果他点击标记,我将纬度和经度信息输入一个信息窗口(完成并且没关系)
尝试做的事情:用户可以给出尺寸(公里/英里),我必须绘制一个给定大小的矩形(创建标记应该是区域的中间)。问题来自仅采用纬度和经度的纬度或界限。所以我尝试转换它。
这里是代码的主要部分。
//latitude
// 1°lat = 111,11 km
//for me: 1km = 0.00900 .
//longitude
//1°lat = 111,11 km * cos latitude
// for me : 1 km = ((1/Math.cos(latitude)) /111.11)
var myBounds = new Array();
var longkm = 5;
var largkm = 2;
myBounds[0] = new google.maps.LatLngBounds(
new google.maps.LatLng(positionmarqueur.lat()-(0.009*longkm), positionmarqueur.lng()-(Math.abs(((1/Math.cos(positionmarqueur.lat()-(0.009*longkm))) /111.11))*largkm)),
new google.maps.LatLng(positionmarqueur.lat()+(0.009*longkm), positionmarqueur.lng()+(Math.abs(((1/Math.cos(positionmarqueur.lat()+(0.009*longkm))) /111.11))*largkm))
);
var overlay1 = new google.maps.Rectangle({
map: map,
bounds: myBounds[0],
strokeColor: "green",
strokeWeight: 1
});
var longkm = 10;
var largkm = 10;
myBounds[1] = new google.maps.LatLngBounds(
new google.maps.LatLng(positionmarqueur.lat()-(0.009*longkm), positionmarqueur.lng()-(Math.abs(((1/Math.cos(positionmarqueur.lat()-(0.009*longkm))) /111.11))*largkm)),
new google.maps.LatLng(positionmarqueur.lat()+(0.009*longkm), positionmarqueur.lng()+(Math.abs(((1/Math.cos(positionmarqueur.lat()+(0.009*longkm))) /111.11))*largkm))
);
var overlay2 = new google.maps.Rectangle({
map: map,
bounds: myBounds[1],
strokeColor: "blue",
strokeWeight: 1
});
这应该画一个 5,2 的矩形和一个 10,10 的矩形(嗯,一个 10 公里的正方形) (信息:var positionmarqueur = latLng; 上面的代码)
如果我看一下结果:第一个矩形看起来超过 50/20 公里。 (除法时我做错了吗?用 10 因子?我数学不是很好,但看起来是正确的)。
第二个......看起来就像一个 200*40 公里的矩形......
所以。问题出在哪里?公式错了吗?还是我很笨,我错过了什么?
瘦身。
【问题讨论】:
标签: javascript google-maps coordinate-transformation