0

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

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

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

<div>当多边形出现在地图上时,我希望to 消失。但就目前而言,它在此之前消失了一点。<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();
}           
4

1 回答 1

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();
});
于 2013-08-28T20:34:43.167 回答