16

मैं गूगल मैप्स एपीआई के साथ एक वेब एप्लिकेशन बनाने रहा हूँ, मैं एक क्षेत्र को सुचारू रूप में ज़ूम करने की जरूरत है, तो मैं setTimeout का उपयोग हर दूसरे ज़ूम स्तर को बढ़ाने के लिए है, लेकिन खराब नेटवर्क के साथ कुछ जगह में, नक्शा चित्र बहुत धीमी गति से लोड किए गए हैं उस पृष्ठ जल्दी से एक सफेद पृष्ठ पर बारी ....Google मानचित्र के कुछ हिस्से को प्रीलोड कैसे करें?

तो मेरे सवाल यह है कि क्या यह संभव है

+0

मुझे एक ही समस्या है। ज़ूम स्तर को आसान बनाने के लिए चाहते हैं ... – Flaudre

+1

@ फ्लूडर क्या आपने आरएएसजी के समाधान की कोशिश की है? – wong2

+1

शायद धीरे-धीरे ज़ूम करना धीमी कनेक्शन पर उपयोगकर्ताओं के लिए सबसे अच्छा उपयोगकर्ता अनुभव नहीं है? भले ही आप सभी डेटा को प्री-लोड करते हैं, फिर भी उन्हें – dpix

उत्तर

12

आप शायद कर सकता है पूर्व (एक बिंदु के 16 करने के लिए 3 से ज़ूम) गूगल मैप्स का कुछ हिस्सा पहले से लोड करने इसे एक छिपे हुए div या iframe में लोड करें।

लेकिन आप यकीन है कि यह डेटा निर्यात या प्रतिलिपि के खिलाफ Google Maps/Google Earth APIs Terms of Service

10.1.3 प्रतिबंध के खिलाफ नहीं है बनाना चाहिए।

(बी) कोई प्री-फ़ेचिंग, कैशिंग या सामग्री का संग्रहण नहीं। आप नहीं पहले लाएं चाहिए, कैश, या सिवाय इसके कि आप स्टोर कर सकता है किसी भी सामग्री की दुकान, (i) अपने मैप्स एपीआई कार्यान्वयन के प्रदर्शन को सुधारने के उद्देश्य के लिए सामग्री की सीमित मात्रा में यदि आप ऐसा अस्थायी रूप से करते हैं, सुरक्षित रूप से, और इस तरह से सेवा के बाहर सामग्री का उपयोग करने की अनुमति नहीं देता है; और (ii) कोई सामग्री पहचानकर्ता या कुंजी जो मैप्स एपीआई दस्तावेज़ीकरण विशेष रूप से आपको स्टोर करने की अनुमति देता है। उदाहरण के लिए, आप सामग्री का उपयोग करना चाहिए नहीं की एक स्वतंत्र डेटाबेस बनाने के लिए "स्थानों।"

+1

महान। बिना किसी स्पष्टीकरण के एक डाउनवोट। – RASG

+0

पढ़ना कि ऐसा लगता है कि प्रदर्शन को बेहतर बनाने के लिए इसे प्रीलोड करना ठीक है। – dalore

+0

ऐसा लगता है कि TOS @RASG के प्रस्तावित समाधान के विरुद्ध नहीं है। तो इसके साथ जाओ और चिंता मत करो! दोस्त, हम आपको किसी भी अदालत में वापस! – NDFA

4

कुछ कोड

बनाने मैं बस के आधार पर एक स्क्रिप्ट 5 साल के बना लिया है आरएएसजी द्वारा विचार। आइए एक छिपे हुए मानचित्र बनाएं और जब इसे पूरी तरह से लोड किया जाए, तो इसे ज़ूम करें। हम इसे बार-बार करते हैं जब तक कि यह सभी ज़ूम कैश न हो जाए। काम कर रहे fiddle is here। ज़ूम प्रगति को देखने के लिए मैंने शीर्ष दाएं कोने में div जानकारी दी है।

// init the hidden map 
var mapOptions = { 
    center: new google.maps.LatLng(center.lat, center.lng), 
    zoom: minZoom + 1 
}; 
var preMap = new google.maps.Map(document.getElementById('map-canvas-hidden'), mapOptions); 

// when the current hidden map is fully loaded, zoom it in 
preMap.addListener('tilesloaded', function() { 
    $('#out').html('Zoom ' + preMap.getZoom() + ' preloaded'); 

    // if there is zoom to zoom-in, do it after some rest 
    if(preMap.getZoom() < maxZoom) { 
    setTimeout(function(){ 
     preMap.setZoom(preMap.getZoom() + 1); 
    }, 50); 
    } 
}); 

यह वास्तव में नक्शे को कैश करता है?

ठीक है, स्पष्ट ब्राउज़र का कैश और बेला खोलें।

enter image description here

ब्राउज़र नेटवर्क गतिविधि में हम डाउनलोड करने छवियों का एक बहुत कुछ देख सकते हैं। फिर मानचित्र को ज़ूम करें और फिर गतिविधि देखें। ऐसा लगता है कि सभी छवियों को कैश से लोड किया गया है।

enter image description here

आशा है कि यह मदद करता है।

+0

पहले दो कैश प्राप्त होने तक आप अपनी धीमी ज़ूम-इन की गति की गणना कर सकते हैं। –

+0

बहुत अच्छा! अपने हाथ गंदे पाने के लिए +1 :) – RASG

+0

हे इवान, प्रयास के लिए बहुत बहुत धन्यवाद। मैंने कुछ बक्षीस को पुरस्कृत करने के लिए बहुत देर से पेज की जांच की। मुझे उम्मीद है कि आप केवल एक उथल-पुथल के साथ ठीक हैं। – Flaudre

संबंधित मुद्दे