我需要查看某些LatLng是否在Google Maps Circle中(其中一个:http://code.google.com/apis/maps/documentation/javascript/overlays.html#Circles)。我该如何解决这个问题?制作圆圈的标记是:
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
circlemarker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
THEradius = parseFloat(THEradius);
var populationOptions = {
strokeColor: "#BDAEBB",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#BDAEBB",
fillOpacity: 0.5,
map: map,
center: results[0].geometry.location,
radius: THEradius
};
cityCircle = new google.maps.Circle(populationOptions);
map.fitBounds(cityCircle.getBounds());
}
});
我可以使用半径吗?
答案 0 :(得分:2)
var distance = google.maps.geometry.spherical.computeDistanceBetween(
results[0].geometry.location, otherLatLng);
if (distance <= THEradius) {...} else {...}
我希望这对你有用。见http://code.google.com/apis/maps/documentation/javascript/reference.html#spherical
答案 1 :(得分:1)
您需要做的是将您的lat-lon列表转换为google坐标空间,或将该转换为lat-lon坐标空间。
如何进行转换取决于您使用的语言,但有些网站会为您进行转换,如果它是一次性的。
一旦你在与圆圈相同的坐标空间中得到了lat-lon位置,你可以使用简单的毕达哥拉斯数学计算出位置是否小于圆的半径(如你所建议的那样)。
HYP = (OPP^2 * ADJ^2)^0.5
其中:
OPP is the difference in x direction from the centre of the circle
ADJ is the difference in y direction from the centre of the circle.
HYP is the distance in a straight line from the centre of the circle
答案 2 :(得分:1)
在数学方面,要找到2D中从一个点到另一个点的距离,请使用Pythagoras:
X = X1 - X2
Y = Y1 - Y2
(以上有效地计算了从一个点到另一个点的矢量)
1到2的距离= sqrt(X ^ 2 + Y ^ 2)
然后你可以将它与你的半径进行比较。如果距离小于半径,则该点在圆圈内。
您需要先获取与圆心和您要比较的点对应的点。这些必须在同一个坐标空间内。