我已经设置了一些多边形,把它们画在地图上就好了.我还设法在点击它们时触发console.log.但是,我将如何继续找出实际点击的多边形?
正如您在我的示例代码中所看到的,我将每个对象存储在集合"lots"中,但是 - 单击它们只会给我一点点跟踪.我想我可能需要遍历我的多边形并检查点击点是否与它们相交,从而找出它是哪个多边形...是否有更简单的解决方案?
var lot = new google.maps.Polygon({
paths: me.area,
strokeColor: 'black',
strokeOpacity: 0.35,
strokeWeight: 1,
fillColor: fillcol,
fillOpacity: 0.35
});
lot.setMap(map);
var obj = {
'id':me.id,
'rented':me.rented,
'area':lot
};
google.maps.event.addListener(lot, 'click', function(event) {
console.log(event);
});
lots.push(lot);
Run Code Online (Sandbox Code Playgroud)
dmi*_*try 13
为什么在创建它们时不为每个多边形分配一些id属性,以后再使用this.myID?实际上,您可以在该多边形对象上挂起所需的所有信息.
var lot = new google.maps.Polygon({
paths: me.area,
strokeColor: 'black',
strokeOpacity: 0.35,
strokeWeight: 1,
fillColor: fillcol,
fillOpacity: 0.35
});
lot.setMap(map);
var obj = {
'id':me.id,
'rented':me.rented,
'area':lot
};
lot.objInfo = obj;
google.maps.event.addListener(lot, 'click', function(event) {
console.log(this.objInfo);
});
lots.push(lot);
Run Code Online (Sandbox Code Playgroud)
它会比循环中的路径比较更有效,或者我错过了什么?:)
如果我可以使用不同的解决方案稍晚一点,我遇到了同样的问题并发现您可以在多边形上定义自定义属性.
我的例子(在美国地图上创建一个州)
poly = new google.maps.Polygon({
map_state_id: map_state_id,
paths: pts,
fillColor: colour,
fillOpacity: 0.66,
strokeWeight: 1,
clickable:true
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"map_state_id"是自定义属性.我已将其定义为州的ID(阿拉巴马州为1,阿拉斯加州为2,等)
然后,当稍后单击特定状态时,可以将此"map_state_id"传递到事件函数中.
google.maps.event.addListener(poly, 'click', function()
{
var map_state_id = this.map_state_id; //retrieve correct state_id
$.ajax(
{
type: "POST",
url: "http://www...get_state_info.php",
data: {state_id : map_state_id},
dataType: "html",
success: function(data)
{
$("#state_info").html(data); //display some info
}
});
});
Run Code Online (Sandbox Code Playgroud)
我在http://dominoc925.blogspot.com/2011/12/add-your-own-property-field-to-google.html找到了这个特殊的概念.
| 归档时间: |
|
| 查看次数: |
14586 次 |
| 最近记录: |