创建和显示多边形之间的延迟

时间:2013-08-28 18:51:36

标签: javascript google-maps google-maps-api-3 javascript-events polygon

要在我的地图中创建多边形,我使用jQuery.getJSON()加载包含多边形和多边形的geojson文件。然后我用github插件(loadgeojson)分析geojson,最后在地图上创建多边形。

我将一个<div>加载了一个加载gif,它覆盖了在jQuery.getJSON()被调用之前出现的地图。

问题是删除它的时机。当所有多边形可见属性设置为 True 时,我会使加载动画消失。

当多边形出现在地图上时,我希望<div>消失。但就目前而言,它在此之前消失了一点。因此,在较慢的浏览器上,<div>消失和出现的多边形之间存在相对较大的延迟。

我试图把听众放在一个事件上,但我找不到符合我想要的事件。

如何在地图上出现多边形时,如何及时删除加载动画?

这是我的代码:

function readJSON(id){
    showLoadingAnimation();

    // If .json hasn't been read
    if(stockArray[id].length == 0) {
        $.getJSON(id + ".json", function(data){
        showFeature(data, id)
        })
    }
}

function showFeature(geojson, elemtype){
    currentFeature_or_Features = new GeoJSON(geojson, elemtype, options);
    if (currentFeature_or_Features.type && currentFeature_or_Features.type == "Error"){
        return;
    }
    // Display object
    if (currentFeature_or_Features.length){
        for (var i = 0; i < currentFeature_or_Features.length; i++){
            if(currentFeature_or_Features[i].length){
                for(var j = 0; j < currentFeature_or_Features[i].length; j++){
                    // Display multipolygon
                    currentFeature_or_Features[i][j].setMap(map);
                    // Mouse events for multipolygons
                    mouseEventsMulti(i,j,elemtype);
                }
            }
            else{
                // Display polygons, polylines and points
                currentFeature_or_Features[i].setMap(map);
                // Mouse events for polygons, polylines and points
                mouseEventsSimple(i,elemtype)           
            }
        }
    } else {
        currentFeature_or_Features.setMap(map)
    }

    // Stop loading animation
    dontShowLoadingAnimation();
}           

1 个答案:

答案 0 :(得分:0)

最后,我修改了我的代码,在创建多边形后稍微平移地图。然后它激活停止加载动画的空闲侦听器。

它可能不是最漂亮的代码,但它可以工作。

这是我添加到showFeature函数

的内容
center = map.getCenter();
latLngCenter = new google.maps.LatLng(center.lat() + 0.0000001,center.lng() + 0.0000001);
map.panTo(latLngCenter);

这是听众

google.maps.event.addListener(map, 'idle', function() {
    // Stop loading animation
    dontShowLoadingAnimation();
});