如何创建适合Google地图视图端口的圆圈?

时间:2015-04-20 05:34:18

标签: javascript google-maps google-maps-api-3

我正在尝试在Google地图上创建一个圆圈,但问题是: 我希望圆圈适合视图端口(地图区域)高度或宽度(以较小者为准)。

实际上,我想实现半径搜索,所以我发现这是一种更好的方法。如果我做错了或任何其他更好的方法,请告诉我。我正在使用Google maps API v3。

由于

1 个答案:

答案 0 :(得分:0)

创建一个适合最短片段(到画布顶部或左侧)的圆圈。您需要包含Geometry library来计算距离。

// Get map bounds
var bounds = map.getBounds();

// Find map top border & distance to center
var mapTop = new google.maps.LatLng(bounds.getNorthEast().lat(), myLatLng.lng());
var distanceToTop = google.maps.geometry.spherical.computeDistanceBetween(myLatLng, mapTop);

// Find map left border & distance to center
var mapLeft = new google.maps.LatLng(myLatLng.lat(), bounds.getSouthWest().lng());
var distanceToLeft = google.maps.geometry.spherical.computeDistanceBetween(myLatLng, mapLeft);

// Get shortest length
var radius = distanceToTop < distanceToLeft ? distanceToTop : distanceToLeft;

var circle = new google.maps.Circle({
    strokeColor: '#FF0000',
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: '#FF0000',
    fillOpacity: 0.35,
    editable: true,
    map: map,
    center: myLatLng,
    radius: radius
});

JSFiddle demo