1

我对 JavaScript 和 Google Maps Api 没有太多经验。我想要实现的目标:我有一张地图,用户可以在其中放置标记或绘制多边形。我正在使用 gmap3 插件,并且我已经设法使用标记完成了我想做的所有事情(例如添加、编辑、拖动、删除等),但是我遇到了多边形问题。这是基本代码:

    $('#map-mappoints').gmap3(
    {
        action:'init',
        options:{
            zoom: 7
        }
        ,
        events: {
            click: function(event, data) {
                if($(".map #poly").hasClass('active')){
                    placePoly(data.latLng);
                } else {
                    placeMarker(data.latLng);
                }
            }
        }
    },
    {
        action:"autofit"
    }
    );


    function placePoly(location) {
        $('#map-mappoints').gmap3({ 
            action: 'addPolygon',
            options:{
                strokeColor: "#FF0000",
                strokeOpacity: 0.8,
                strokeWeight: 2,
                fillColor: "#FF0000",
                fillOpacity: 0.35
            },
            callback: function(polygon){
                var path = polygon.getPath();
                path.push(location);
                console.log(path);
            }
        }
        )
    } 

我可以在控制台中看到它创建了多边形,但它只添加了一个路径元素,这是逻辑,因为它在每次点击地图后触发,但我不知道我应该如何让它继续向多边形添加新元素,然后让用户停止(可能通过工具栏中的某个按钮),并在单击“新多边形”后创建新的。

谢谢你的任何提示。

附言。英语不是我的母语,所以我很抱歉有任何错误,我尽量避免它们;)

4

1 回答 1

1

阅读下面标题 gmap3 的参数

http://gmap3.net/documentation.html

对于它的主要用途,gmap3 将对象作为参数。每个对象都是要执行的动作。这些动作在参数列表中按照它们的顺序执行,并且每次都在前一个完成后执行。本例先初始化google地图,然后添加两个标记

小路

指定闭环的有序坐标序列。与折线不同,多边形可能由一条或多条路径组成。因此,paths 属性可以指定一个或多个 LatLng 坐标数组。可以使用单个 LatLng 数组定义简单的多边形。更复杂的多边形可以指定一个数组数组。任何简单的数组都被转换成 MVCArrays。从 MVCArray 中插入或删除 LatLngs 将自动更新地图上的多边形。

MVCArray 是一个可变数组,因此您可以向数组中添加更多的经纬度坐标,并且多边形将自动更新。

希望这可以帮助你!

问候

于 2012-03-16T16:58:23.363 回答