gpt4 book ai didi

javascript - google.maps.Circle 捕捉到最近的英里

转载 作者:行者123 更新时间:2023-12-02 17:03:27 25 4
gpt4 key购买 nike

在 Google v3 api 中创建了一些功能,用户可以在其中放置图钉。一旦他们放下图钉,就会创建一个以图钉为中心的可编辑圆圈。他们可以扩大圆圈并查看信息窗口中弹出的距离。问题是很难达到最近的一英里或半英里。我会尝试通过拖动圆圈来将其精确到最近的英里,结果大约为 10.23 英里...

有人对此有建议吗? http://jsfiddle.net/wa8s0dya/

//create circle
function createCircle() {
if ((circle != null) && circle.setMap) {
circle.setMap(null);
circle = null;
}
var options = {
strokeColor: '#0099FF',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#0099FF',
fillOpacity: 0.35,
map: map,
center: marker.getPosition(),
editable: true,
radius: 500

};

// Add the circle for this city to the map.
circle = new google.maps.Circle(options);
google.maps.event.addListener(circle, 'radius_changed', function () {
removeInfoWindow();
popUpPinInfo(marker, circle.radius, map);
});

google.maps.event.addListener(circle, 'circlecomplete', function () {
removeInfoWindow();
popUpPinInfo(marker, circle.radius, map);
});


}

最佳答案

一英里为 1609.34 米(圆的半径以米为单位定义)。

要使圆的大小以 1 英里为增量,您需要设置半径(+8m 会导致它不会向下舍入到 0.99 英里):

circle.setRadius(circle.getRadius() - (circle.getRadius() % 1609.34)+8);

每当半径改变时:

google.maps.event.addListener(circle, 'radius_changed', function () {
if ((circle.getRadius() % 1609.34) > 160) {
circle.setRadius(circle.getRadius() - (circle.getRadius() % 1609.34)+8) // meters per mile
}
removeInfoWindow();
popUpPinInfo(marker, circle.radius, map);
});
google.maps.event.addListener(circle, 'circlecomplete', function () {
circle.setRadius(circle.getRadius() - (circle.getRadius() % 1609.34)+8) // meters per mile
removeInfoWindow();
popUpPinInfo(marker, circle.radius, map);
});

updated fiddle

关于javascript - google.maps.Circle 捕捉到最近的英里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com