[javascript] كيف يمكنني التحقق من تحميل خرائط Google بالكامل؟



3 Answers

أقوم بإنشاء تطبيقات html5 للجوّال ولاحظت أن أحداث idle و bounds_changed و tilesloaded عند إنشاء كائن الخريطة tilesloaded (حتى إذا لم يكن مرئيًا).

لجعل خريطتي تشغل الكود عندما يتم عرضه لأول مرة قمت بعمل ما يلي:

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
    //this part runs when the mapobject is created and rendered
    google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
        //this part runs when the mapobject shown for the first time
    });
});
Question

أقوم بتضمين خرائط Google في موقع الويب الخاص بي. بمجرد أن يتم تحميل خرائط Google ، أحتاج إلى بدء بعض عمليات JavaScript.

هل هناك طريقة للاكتشاف تلقائيًا عندما تم تحميل خرائط Google بالكامل ، بما في ذلك تنزيلات التجانب وجميع؟

توجد طريقة tilesloaded() التي من المفترض أن تحقق هذه المهمة بالضبط ولكنها لا تعمل .




عندما تكون map المتغيرة هي كائن من النوع GMap2:

    GEvent.addListener(map, "tilesloaded", function() {
      console.log("Map is fully loaded");
    });



إذا كنت تستخدم مكونات الويب ، فسيكون هذا بمثابة مثال على ذلك:

map.addEventListener('google-map-ready', function(e) {
   alert('Map loaded!');
});



في حالتي ، تم تشغيل "صورة التجانب" المحملة من حدث url و tilesloaded عن بعد قبل عرض الصورة.

أنا حل مع اتباع الطريقة القذرة.

var tileCount = 0;
var options = {
    getTileUrl: function(coord, zoom) {
        tileCount++;
        return "http://posnic.com/tiles/?param"+coord;
    },
    tileSize: new google.maps.Size(256, 256),
    opacity: 0.5,
    isPng: true
};
var MT = new google.maps.ImageMapType(options);
map.overlayMapTypes.setAt(0, MT);
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
    var checkExist = setInterval(function() {
        if ($('#map_canvas > div > div > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div > div').length === tileCount) {
            callyourmethod();
            clearInterval(checkExist);
        }
    }, 100); // check every 100ms
});





Related