2010-05-27 15 views
41

मैं एक jQuery $.getJSON को Google Maps Geocoding webservice पर कॉल करने का प्रयास कर रहा हूं, लेकिन यह क्रॉस-डोमेन सुरक्षा समस्याओं के कारण काम नहीं करता है।Google मानचित्र API पर क्रॉस-डोमेन AJAX कॉल कैसे करें?

मैं ऑनलाइन यह पता लगाने के लिए सक्षम नहीं किया गया है, लेकिन मैं गूगल Javascript API या JSONP, लेकिन अब तक कोई स्पष्ट उत्तर के बारे में थोड़ा पढ़ा है ...

किसी को भी मुझे enlight सकते हैं?

धन्यवाद!

उत्तर

86

Server-side Geocoding Web Service का उपयोग करने में मुझे कोई फायदा नहीं दिख सकता है जब Google मानचित्र जावास्क्रिप्ट के लिए एक पूर्ण विशेषीकृत Client-side Geocoding API प्रदान करता है।

सबसे पहले, यह स्वचालित रूप से आपकी वही मूल समस्या हल करता है, और इसके अतिरिक्त अनुरोध सीमा प्रति सर्वर आईपी पते की बजाय प्रति ग्राहक आईपी पते की गणना की जाएगी, जो एक लोकप्रिय साइट के लिए एक बड़ा अंतर बना सकती है।

<script src="http://maps.google.com/maps/api/js?sensor=false"></script> 

<script type="text/javascript">  
    var geocoder = new google.maps.Geocoder(); 
    var address = 'London, UK'; 

    if (geocoder) { 
     geocoder.geocode({ 'address': address }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      console.log(results[0].geometry.location); 
     } 
     else { 
      console.log("Geocoding failed: " + status); 
     } 
     }); 
    }  
</script> 

किसी कारण से आप अभी भी सर्वर साइड वेब सेवा का उपयोग करना चाहते हैं, तो आप ऊपर एक बहुत ही सरल reverse proxy शायद सेट कर सकते हैं,:

यहाँ एक बहुत ही सरल जावास्क्रिप्ट जियोकोडिंग API v3 का उपयोग कर उदाहरण दिया गया है यदि आप अपाचे का उपयोग कर रहे हैं तो mod_proxy का उपयोग कर। यह आपको अपने AJAX अनुरोधों के सापेक्ष पथों का उपयोग करने की अनुमति देगा, जबकि HTTP सर्वर किसी भी "दूरस्थ" स्थान पर प्रॉक्सी के रूप में कार्य करेगा।

mod_proxy में एक रिवर्स प्रॉक्सी सेट करने के लिए मूलभूत कॉन्फ़िगरेशन निर्देश प्रॉक्सीपास है। इस प्रकार आप आमतौर पर यह प्रयोग करेंगे:

ProxyPass  /geocode/  http://maps.google.com/maps/api/geocode/ 

इस मामले में, ब्राउज़र /geocode/output?parameters के लिए एक अनुरोध कर सकता है लेकिन सर्वर http://maps.google.com/maps/api/geocode/output?parameters के लिए एक प्रॉक्सी के रूप में कार्य करके इस काम करेगा।

+0

धन्यवाद, मुझे इस तरह के वर्ग के अस्तित्व से अवगत नहीं था। यह मेरी समस्या हल करता है :) –

+0

@ डैनियल वासलो, क्या आपने http://maps.google.com/maps/place की तुलना में एपीआई का उपयोग करने में अंतर देखा है? मुझे उस यूआरएल का उपयोग करते समय बेहतर परिणाम मिलते हैं। क्या आपके पास इस हिस्से पर अधिक जानकारी है? उदाहरण के लिए, Google इसका पता लगा सकता है: http://bit.ly/9wxOL2 लेकिन मैंने बिना किसी सफलता के कुछ दिनों के लिए API का उपयोग करके उसी स्थान का पता लगाने का प्रयास किया है। – wenbert

+0

@ वेनबर्ट: हाँ मैंने देखा कि कुछ अवसरों में। मुझे maps.google.com और मैप्स एपीआई से थोड़ा अलग होने के लिए कुछ नक्शा इमेजरी (उपग्रह और सड़क मानचित्र दोनों) भी मिलते हैं। उदाहरण के लिए मुझे एक अवसर मिला जहां maps.google.com और मैप्स एपीआई की इमेजरी की तुलना करते समय पूरे द्वीप की सीमा उत्तर में कुछ 100 मीटर तक ऑफसेट हो जाती है। –

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