在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

09-12 00:01