在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);
});
}
最佳答案
1英里为1609.34米(圆的半径以米为单位定义)。
要使圆的大小以1英里为单位递增,您需要确定半径(+ 8m使其不向下取整至.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