2012-11-23 11 views
8

मैं HTML और जावास्क्रिप्ट का उपयोग कर मोबाइल एप्लिकेशन में Google मानचित्र का उपयोग कर रहा हूं। जब मैं नक्शा लोड करता हूं तो मैं ऊपरी बाएं कोने में मानचित्र का 5% देख सकता हूं। Div कंटेनर का 9 5% ग्रे है। जब मैं फायरबग के साथ div को देखना चाहता हूं तो पूरा नक्शा अचानक लोड हो जाता है। वह क्या हो सकता है? मैंने पहले से ही कई स्टैक ओवरफ्लो धागे की कोशिश की लेकिन मेरे लिए कोई समाधान नहीं हुआ। धन्यवाद।Google मानचित्र ग्रे

कोड:

<link type="text/css" rel="stylesheet" href="jquery.mobile...> 
<link type="text/css" rel="stylesheet" href="index.css"> 
<script type="text/javascript" src="jquery.mobile...></script> 
<script type="text/javascript" src="jquery.mobile/jquery.mobile...></script> 
<script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js">  </script> 
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script> 
<script type="text/javascript" charset="utf-8" src="index.js"></script> 

<div id="map" style="width: 700px; height: 700px;"></div> 

var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 10, 
     center: new google.maps.LatLng(-33.92, 151.25), 
     mapTypeId: google.maps.MapTypeId.ROADMAP         
}); 

index.js

$(document).ready(function() { 
    $(window).resize(function() { 
     google.maps.event.trigger(map, 'resize'); 
    }); 
}); 

जब मैं div विशेषताओं% में मापा का उपयोग करें या उन्हें यह बिल्कुल भी काम नहीं करता।

+1

कोड को देखने की आवश्यकता है ... या यहां तक ​​कि एक सैंडबॉक्स संस्करण भी बेहतर है। – meo

+6

कंटेनर तत्व ठीक से आकार देने से पहले नक्शा की तरह लगता है। 'google.maps.event.trigger (नक्शा 'आकार बदलें') 'जहां' नक्शा 'आपका नक्शा है। – Dykam

+0

क्या आपने नक्शा धारण करने वाले div कंटेनर के लिए एक आकार निर्दिष्ट किया है, यदि हां, तो आपने किस इकाई का उपयोग किया था, px, em,%? –

उत्तर

18

भी दस्तावेज़ तैयार पर आकार बदलने विधि कॉल करके देखें:

$(document).ready(function() { 
    $(window).resize(function() { 
     google.maps.event.trigger(map, 'resize'); 
    }); 
    google.maps.event.trigger(map, 'resize'); 
}); 
+0

क्या आप सुनिश्चित हैं कि यह $ (दस्तावेज़) है .ready (function()? जब मैं google.maps.event.trigger (मानचित्र, 'आकार बदलें') टाइप करता हूं; फ़ायरफ़ॉक्स कंसोल में यह वास्तव में काम करता है। – AppRoyale

+0

[.ready()] (http://api.jquery.com/ready/) jQuery का उपयोग करके पृष्ठ लोड होने के बाद कोड चलाने के तरीकों में से एक है।यह आपके सभी सीएसएस और स्क्रिप्ट फ़ाइलों को लोड करने के बाद चलाएगा, लेकिन यदि आपके पास अन्य जेएस है जो पृष्ठ के लेआउट को बदलता है, तो यह अभी भी बहुत जल्दी होगा और लेआउट बदलने के बाद आपको आकार बदलने की आवश्यकता होगी। – Douglas

+0

मैं मूल रूप से अब इस अधिकार का प्रयोग किया: $ ('# क्लिक परीक्षण') पर क्लिक करें (function() { \t \t google.maps.event.trigger (नक्शा, 'आकार परिवर्तन'); \t});। यह अब काम करता है लेकिन मुझे नहीं पता कि यह सिर्फ भाग्य है या नहीं। – AppRoyale

12

अपने mapOptions जाँच करें कि क्या इसके केंद्र या अन्य गुणों सही हैं। मेरे अवसर में, केंद्र की संपत्ति Google मानचित्र द्वारा अनजान थी; हालांकि पृष्ठ सीएसएस और जेएसपी के मामले में पूरी तरह से त्रुटिहीन था, लेकिन यह मुझे हर समय सिर्फ भूरे रंग का नक्शा दिखाता था।

+2

धन्यवाद 100 बार !!! वह यह था !!! – Breiti

+0

आपने इसे कैसे ठीक किया? – zubair1024

1

मेरे मामले के लिए, बस map.refresh() पर कॉल करने से इस समस्या को ठीक किया गया। मैं जीएमपीएस का उपयोग कर रहा हूँ।

+0

"map.refresh() एक फ़ंक्शन नहीं है" – JWiley

+1

यह मानना ​​चाहिए कि आपने ओपी की तरह वैरिएबल "मैप" नाम दिया है। – stealthysnacks

0

यह मेरे साथ हुआ क्योंकि MapTypeId NULL था।

प्रयास करें:

map.setMapTypeId("roadmap"); 
0

मेरे मामले में मैं देशांतर जो एक बाहरी एपीआई से आया है प्रदान करने के लिए छोड़ दिया है। एक बार एपीआई को रेखांश शामिल करने के लिए तय किया गया था, तो समस्या हल हो गई थी।

0

मैं एक ऐसी ही सवाल का उपयोग कर angular 5
मैं केवल मानचित्र रीफ़्रेश/एक setTimeoutऔर का उपयोग करके पुन: बनाने के लिए मिल सकता है था एक setZoom (भले ही स्तर में ही है)

// set timeout. 
setTimeout(() => { 
    console.log("attempting refresh"); 
    google.maps.event.trigger(this.map, "resize"); 
    this.map.setZoom(8); 
}, 
100); 

Working Plunker Here

ताज़ा करने के बारे में क्या आकर्षक है, यह है कि यह मानचित्र को दूसरी बार प्रदर्शित करता है। Google मानचित्र स्पष्ट रूप से bug free नहीं है।