如何获取单击多边形的引用?(谷歌地图api v3)

Bis*_*isa 6 google-maps-api-3

我已经设置了一些多边形,把它们画在地图上就好了.我还设法在点击它们时触发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)

它会比循环中的路径比较更有效,或者我错过了什么?:)


dlb*_*685 8

如果我可以使用不同的解决方案稍晚一点,我遇到了同样的问题并发现您可以在多边形上定义自定义属性.

我的例子(在美国地图上创建一个州)

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找到了这个特殊的概念.