2015-06-14 38 views
17

में 'Google मानचित्र API' का उपयोग करके मैं जावास्क्रिप्ट वेब वर्कर में Google मानचित्र API लोड करने का प्रयास कर रहा हूं, लेकिन यह नक्शा पुस्तकालय को लोड करने में विफल रहता है। वेब कर्मचारी कोड इस प्रकार दिखता है:वेब वर्कर

importScripts('http://maps.googleapis.com/maps/api/js?libraries=geometry&key=MYAPIKEY&sensor=FALSE'); 

यह एक सरल

Script Error. 

क्रोम में साथ विफल हो जब मैं कार्यकर्ता लोड करने के लिए प्रयास करें।

मुझे लगता है कि नक्शा पुस्तकालय में कुछ डीओएम तक पहुंचने का प्रयास करता है। लेकिन यह सिर्फ एक अनुमान है। क्या किसी के पास कोई समाधान है?

संपादित करें: मैं ऊपर के लिंक खोला और निकालने के लिए + संशोधित यह सामग्री है की कोशिश की। तो WebWorker.js अब इस तरह दिखता है:

var window = {google: {}}; 
var google = {maps: {}}; 
(function() { 

    function getScript(src) { 
     importScripts(src); 
    //document.write('<' + 'script src="' + src + '"><' + '/script>'); 
    } 

    var modules = google.maps.modules = {}; 
    google.maps.__gjsload__ = function(name, text) { 
    modules[name] = text; 
    }; 

    google.maps.Load = function(apiLoad) { 
    delete google.maps.Load; 
    apiLoad([0.009999999776482582,[[["http://mt0.googleapis.com/[email protected]\u0026src=api\u0026hl=de-DE\u0026","http://mt1.googleapis.com/[email protected]\u0026src=api\u0026hl=de-DE\u0026"],null,null,null,null,"[email protected]",["https://mts0.google.com/[email protected]\u0026src=api\u0026hl=de-DE\u0026","https://mts1.google.com/[email protected]\u0026src=api\u0026hl=de-DE\u0026"]],[["http://khm0.googleapis.com/kh?v=174\u0026hl=de-DE\u0026","http://khm1.googleapis.com/kh?v=174\u0026hl=de-DE\u0026"],null,null,null,1,"174",["https://khms0.google.com/kh?v=174\u0026hl=de-DE\u0026","https://khms1.google.com/kh?v=174\u0026hl=de-DE\u0026"]],[["http://mt0.googleapis.com/[email protected]\u0026src=api\u0026hl=de-DE\u0026","http://mt1.googleapis.com/[email protected]\u0026src=api\u0026hl=de-DE\u0026"],null,null,null,null,"[email protected]",["https://mts0.google.com/[email protected]\u0026src=api\u0026hl=de-DE\u0026","https://mts1.google.com/[email protected]\u0026src=api\u0026hl=de-DE\u0026"]],[["http://mt0.googleapis.com/[email protected],[email protected]\u0026src=api\u0026hl=de-DE\u0026","http://mt1.googleapis.com/[email protected],[email protected]\u0026src=api\u0026hl=de-DE\u0026"],null,null,null,null,"[email protected],[email protected]",["https://mts0.google.com/[email protected],[email protected]\u0026src=api\u0026hl=de-DE\u0026","https://mts1.google.com/[email protected],[email protected]\u0026src=api\u0026hl=de-DE\u0026"]],null,null,[["http://cbk0.googleapis.com/cbk?","http://cbk1.googleapis.com/cbk?"]],[["http://khm0.googleapis.com/kh?v=86\u0026hl=de-DE\u0026","http://khm1.googleapis.com/kh?v=86\u0026hl=de-DE\u0026"],null,null,null,null,"86",["https://khms0.google.com/kh?v=86\u0026hl=de-DE\u0026","https://khms1.google.com/kh?v=86\u0026hl=de-DE\u0026"]],[["http://mt0.googleapis.com/mapslt?hl=de-DE\u0026","http://mt1.googleapis.com/mapslt?hl=de-DE\u0026"]],[["http://mt0.googleapis.com/mapslt/ft?hl=de-DE\u0026","http://mt1.googleapis.com/mapslt/ft?hl=de-DE\u0026"]],[["http://mt0.googleapis.com/vt?hl=de-DE\u0026","http://mt1.googleapis.com/vt?hl=de-DE\u0026"]],[["http://mt0.googleapis.com/mapslt/loom?hl=de-DE\u0026","http://mt1.googleapis.com/mapslt/loom?hl=de-DE\u0026"]],[["https://mts0.googleapis.com/mapslt?hl=de-DE\u0026","https://mts1.googleapis.com/mapslt?hl=de-DE\u0026"]],[["https://mts0.googleapis.com/mapslt/ft?hl=de-DE\u0026","https://mts1.googleapis.com/mapslt/ft?hl=de-DE\u0026"]],[["https://mts0.googleapis.com/mapslt/loom?hl=de-DE\u0026","https://mts1.googleapis.com/mapslt/loom?hl=de-DE\u0026"]]],["de-DE","US",null,0,null,null,"http://maps.gstatic.com/mapfiles/","http://csi.gstatic.com","https://maps.googleapis.com","http://maps.googleapis.com",null,"https://maps.google.com","https://gg.google.com","http://maps.gstatic.com/maps-api-v3/api/images/","https://www.google.com/maps",0],["http://maps.gstatic.com/maps-api-v3/api/js/21/3/intl/de_ALL","3.21.3"],[141790386],1,null,null,null,null,null,"",["geometry"],null,0,"http://khm.googleapis.com/mz?v=174\u0026","AIzaSyDQi59vEjsIzBM-AFMeDbszVsOckQOb5A8","https://earthbuilder.googleapis.com","https://earthbuilder.googleapis.com",null,"http://mt.googleapis.com/vt/icon",[["http://mt0.googleapis.com/vt","http://mt1.googleapis.com/vt"],["https://mts0.googleapis.com/vt","https://mts1.googleapis.com/vt"],null,null,null,null,null,null,null,null,null,null,["https://mts0.google.com/vt","https://mts1.google.com/vt"],"/maps/vt",306000000,132],2,500,[null,"http://g0.gstatic.com/landmark/tour","http://g0.gstatic.com/landmark/config",null,"http://www.google.com/maps/preview/log204","","http://static.panoramio.com.storage.googleapis.com/photos/",["http://geo0.ggpht.com/cbk","http://geo1.ggpht.com/cbk","http://geo2.ggpht.com/cbk","http://geo3.ggpht.com/cbk"]],["https://www.google.com/maps/api/js/master?pb=!1m2!1u21!2s3!2sde-DE!3sUS!4s21/3/intl/de_ALL","https://www.google.com/maps/api/js/widget?pb=!1m2!1u21!2s3!2sde-DE"],null,0,0,"/maps/api/js/ApplicationService.GetEntityDetails",0], loadScriptTime); 
    }; 

    importScripts(
    'http://maps.gstatic.com/maps-api-v3/api/js/21/3/intl/de_ALL/main.js' 
    , 'http://maps.gstatic.com/maps-api-v3/api/js/21/3/intl/de_ALL/geometry.js' 
    ); 

})(); 

लेकिन यह अभी भी 'स्क्रिप्ट त्रुटि' में परिणाम देता है।

+0

मैं इस पर भी अटक गया हूं, idk क्यों जवाब देने के लिए कोई परेशान नहीं .. उम्मीद है कि यह बदल जाएगा? – pascalwhoop

+0

सिर्फ जिज्ञासा के लिए: आप वेबवर्कर में Google मानचित्र एपीआई क्यों लोड करना चाहते हैं? – albanx

+0

आपकी 'स्क्रिप्ट त्रुटि' है क्योंकि आप किसी अन्य सर्वर से जेएस फ़ाइलों को आयात करने की कोशिश कर रहे हैं। इसके आस-पास जाने का एक तरीका यह है कि आपके सर्वर के पास एक सरल एपीआई है जैसे '/ fetch-script? Src =" http: //maps.gstatic ... "' और यह जेएस सामग्री देता है। PHP में फ़ाइल केवल 'echo file_get_contents (http: //maps.gstatic ...) 'echo होगी –

उत्तर

2

मानचित्र, ड्राइव आदि जैसे Google क्लाइंट एपीआई को डोमेन तत्व की आवश्यकता है ताकि आप वेब कार्यकर्ता में मानचित्र एपीआई का उपयोग न कर सकें। घंटों के शोध के बाद भी मुझे भी इसी तरह की समस्या थी, मैंने पुष्टि की कि यह कम से कम नहीं किया जा सकता है। वेब wroker के बारे में आपको कुछ जानकारी चाहिए।

XMLHttpRequest, JSON, कार्यकर्ता, नाविक, स्थान, सेट और स्पष्ट समय समाप्त, आयात स्क्रिप्ट, सेट और स्पष्ट अंतराल:

बहुत कुछ वस्तुओं हम वेब कार्यकर्ताओं में उपयोग किया है सकते हैं।

खिड़की या अभिभावक, स्थानीय स्टोरेज ऑब्जेक्ट्स वेब कार्यकर्ता से उपलब्ध नहीं हैं।

अधिक जानकारी के लिए आप this लिंक देख सकते हैं।

1

मैं वास्तव में कार्यकर्ता को बेवकूफ बनाकर मार्कर का एक उदाहरण बनाने में सक्षम हूं कि इसका उपयोग करने के लिए एक डोम ऑब्जेक्ट था। मैंने उन लोगों के विचार को चुरा लिया जो श्रमिकों के भीतर jQuery कमांड का उपयोग करने का प्रयास कर रहे हैं, जो एक ही समस्या का सामना करते हैं। मेरा संदर्भ यहां से था:

// create a fake document for jQuery to function - DOES NOT PROVIDE ACCESS TO ACTUAL DOM ELEMENTS 
// from Tomáš Zato comment on http://stackoverflow.com/questions/10491448/how-to-access-jquery-in-html-5-web-worker 
var document = self.document = {parentNode: null, nodeType: 9, toString:function() {return "FakeDocument"}}; 
var window = self.window = self; 
var fakeElement = Object.create(document); 
fakeElement.nodeType = 1; 
fakeElement.toString=function() {return "FakeElement"}; 
fakeElement.parentNode = fakeElement.firstChild = fakeElement.lastChild = fakeElement; 
fakeElement.ownerDocument = document; 

document.head = document.body = fakeElement; 
document.ownerDocument = document.documentElement = document; 
document.getElementById = document.createElement = function() {return fakeElement;}; 
document.createDocumentFragment = function() {return this;}; 
document.getElementsByTagName = document.getElementsByClassName = function() {return [fakeElement];}; 
document.getAttribute = document.setAttribute = document.removeChild = 
    document.addEventListener = document.removeEventListener = 
    function() {return null;}; 
document.cloneNode = document.appendChild = function() {return this;}; 
document.appendChild = function(child) {return child;}; 
संबंधित मुद्दे