如何在地图上检测结束绘图圆的事件

时间:2014-02-06 12:01:10

标签: javascript google-maps

var markers = mapController.gMarkers;
    var lng = markers.length;
    for (var i = 0; i < lng; i++) {
        // Add circle overlay and bind to marker
        var circle = new google.maps.Circle({
            map: mapController.mapGl.map,
            radius: 160930,    // 100 miles in metres
            fillColor: '#AA0000'
        });
        circle.bindTo('center', markers[i], 'position');
        mapController.gCircles.push(circle);
    }

在循环结束时上升一个方法没有帮助。它发生的时间早于所有圆圈都可见。

我希望在地图上绘制并显示所有圆圈时获取活动。 初始代码:

`//check for suportting WebGL
    if (!Detector.webgl) {
        Detector.addGetWebGLMessage();
        return;
    }
    var mapElement = document.getElementById('map');
    var options = {
        maxZoom: 18,
        minZoom: 3,
        zoom: 4,
        center: new google.maps.LatLng(42.19595526752781, -96.67078125),
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        disableDefaultUI: false,
        zoomControl: true,
        draggableCursor: 'url(pcursor.png) 16 16, default'
    };

    mapController = new WebGlMap(mapElement, options);
    var drawingManager = new google.maps.drawing.DrawingManager();
    drawingManager.setMap(mapController.mapGl.map);

    google.maps.event.addListener(drawingManager, 'circlecomplete', function (circle) {
        alert('hit!');
    });

    google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) {
        alert('hit!');
    });

    //mapController.gPolygons = [];
    mapController.gMarkers = [];
    mapController.gCircles = [];`

1 个答案:

答案 0 :(得分:0)

您是否尝试检查圆圈是否可见?

circle.getVisible();

在Api参考时,他们会写“返回这个圆圈在地图上是否可见。”

如果getVisible()返回false,则必须等待。 但它可能只会让你对对象本身具有可见性

另一种方法是使用一个workearound与center_changed事件...添加你的所有圆圈,然后更改最后一个(或一个不可见的帮助圈)的中心如果googlemaps逐个添加圆圈,更改一切都完成后会发生,在这个事件你可以打电话给你的东西

编辑: 我找到了一个你喜欢“circlecomplete”的活动 它是google.maps.drawing.DrawingManager类的一个事件 我认为这会做你想要的事情