Javascript 检查谷歌地图中的多个圆圈中是否存在坐标

Javascript 检查谷歌地图中的多个圆圈中是否存在坐标,javascript,google-maps,Javascript,Google Maps,我有一个谷歌地图,它有多个圆圈围绕着多个点,我用以下方式绘制: for (i = 0; i < markers.length; i++) { var circle = new google.maps.Circle({ map: map, radius: parseInt(radius_entry[markers[i][0]]), fillColor: '#2c3e50', strokeColor: '#2c3e50',

我有一个谷歌地图,它有多个圆圈围绕着多个点,我用以下方式绘制:

for (i = 0; i < markers.length; i++) {
    var circle = new google.maps.Circle({
        map: map,
        radius: parseInt(radius_entry[markers[i][0]]),
        fillColor: '#2c3e50',
        strokeColor: '#2c3e50',
        strokeOpacity: 0
    });

    var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
    pinIcon = new google.maps.MarkerImage(
        "assets/images/station_maker.png",
        null, /* size is determined at runtime */
        null, /* origin is 0,0 */
        null, /* anchor is bottom center of the scaled image */
        new google.maps.Size(21, 34)
    );
    marker = new google.maps.Marker({
        position: position,
        map: map,
        title: markers[i][0],
    });
    marker.setIcon(pinIcon)
    circle.bindTo('center', marker, 'position');
    google.maps.event.addListener(circle, 'click', function(ev) { //Placing marker only on clicks inside a circle
        placeMarker(ev.latLng);
    });
    bounds.extend(position);
    map.fitBounds(bounds);
}
但是,我想添加一个机制,检查搜索的位置是否在前面绘制的任何圆内。我发现这个方法:

polygon.containsLocation()

但这对圆圈不起作用


我也发现了这个问题,但它只涉及地图上画的一个圆圈。如何实现此方案?

您可以利用以下功能确定点是否位于圆内:

function circleContainsLocation(point, circle)
{
    var radius = circle.getRadius();
    var center = circle.getCenter();
    return (google.maps.geometry.spherical.computeDistanceBetween(point, center) <= radius)
}
完整示例

var循环=[];
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
中心:{lat:-33.8688,lng:151.2195},
缩放:13,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var input=document.getElementById('pac-input');
var searchBox=newgoogle.maps.places.searchBox(输入);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(输入);
变量标记=[
[Sydney',-33.867080151.20945050000],
[Newcastle NSW',-32.927896151.768910000]
];
var bounds=new google.maps.LatLngBounds();
对于(var i=0;i0);
如果(找到位置){
document.getElementById('output').innerHTML='placeisfound';
}
扩展(place.geometry.location);
}
映射边界(bounds);
});
}
函数循环包含位置(点、循环)
{
var radius=circle.getRadius();
var center=circle.getCenter();

return(google.maps.geometry.spherical.ComputedDistanceBeween(point,center)为什么您认为不能使用与多个圆相同的方法?您必须保留对所有圆的引用。仅供参考-MarkerImage在v=3.10之后被弃用(很久以前…)
Uncaught ReferenceError:placeMarker没有定义
@geocodezip对不起。
placemMarker
是一个单独的函数,我没有添加。我保留了对圆的引用。我的问题是,我如何传递
变量?我得到了一个
places.geometry.location
对象的位置更改?什么
变量E
function circleContainsLocation(point, circle)
{
    var radius = circle.getRadius();
    var center = circle.getCenter();
    return (google.maps.geometry.spherical.computeDistanceBetween(point, center) <= radius)
}
for (var i = 0, place; place = places[i]; i++) {

     var result = circles.filter(function(c){
         if(circleContainsLocation(place.geometry.location,c))
               return c;
     });
     var placeFound = (result.length > 0);
     if(placeFound){
            console.log('Place is found');
     }

}