2014-04-29 43 views
0

我正在研究一个项目,我希望能够通过在地图上画一个圆圈来在谷歌地图上选择我的自定义标记。应该选择包含圆圈中的所有标记。这是它将如何去:通过画一个圆圈在谷歌地图上选择自定义标记

1. User clicks at a point on googlemaps and draws a circle. 
2. The circle encompasses the custom markers. 
3. All the custom markers are selected. 

我需要通过这3个步骤。

需要帮助。

+0

您有什么麻烦呢?到目前为止你做了什么? – geocodezip

+0

我已将我的标记添加到Google地图。我也用这个代码画了一个圆圈。现在我很困惑如何选择圈子下的位置。 – darthsidious

+0

小于圆心半径的位置位于圆圈中。 – geocodezip

回答

2

可能的工作流程:

  1. 当您创建标记,将其存储在一个对象(使用的ID作为属性名称)。
    样品:

    markers = { 
        1: new google.maps.Marker(/*properties*/), 
        2: new google.maps.Marker(/*properties*/), 
        5: new google.maps.Marker(/*properties*/) 
    } 
    
  2. Circle已经绘制取radius和圆
  3. 遍历markers -properties的center并使用google.maps.geometry.spherical.computeDistanceBetween过滤标记。存储过滤标记的ID在一个数组:

    var IDs=[]; 
    
    for(var k in markers){ 
        if(google.maps.geometry.spherical 
         .computeDistanceBetween(circleCenter,markers[k].getPosition()) 
          <=circleRadius){ 
         IDs.push(k); 
        } 
    } 
    
  4. 的ID阵列发送给服务器端脚本.....

注:geometry -library未装载默认情况下,请参见https://developers.google.com/maps/documentation/javascript/libraries

+0

这真的很酷。我已经掌握了基本知识,但是我希望一旦绘制圆圈,应该触发一个事件,以便我可以提取我的ID。我是第一天的Javascript人,所以需要一些提示。 – darthsidious

+0

得到了google.maps.event.addListener(map,'click',function(e)。希望我是对的! – darthsidious

+0

假设你使用绘图库:会触发['circle_complete'](https:/ /developers.google.com/maps/documentation/javascript/drawing#drawing_events)-event –