سؤال

أحاول استخدام Google Elevation API مع وظيفة getjson من jQuery.

أنا أستخدم هذا الرمز الذي يستخدم JSONP:

jQuery.getJSON("http://maps.googleapis.com/maps/api/elevation/json?locations=23.444,45.4545&sensor=false&jsoncallback=?", function(json){
    alert("a");
});

أستطيع أن أرى في Firebug أن طلب GET يتم إرساله بشكل صحيح وأتلقى الاستجابة الصحيحة من Google:

{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}

ومع ذلك ، فأنا لا أحصل على التنبيه وأحصل على هذا الخطأ من Firebug:

invalid label
"status": "OK",\n

أنا أستخدم Google Maps API V2 ، لذا فأنا أستخدم البناء في الطريقة.

هل هناك أي طريقة للحصول على الارتفاع باستخدام واجهة برمجة تطبيقات Google Elevation عبر طلب Ajax ودون إنشاء وكيل؟

شكرا لمساعدتك.

بنيامين

هل كانت مفيدة؟

المحلول 3

لا تدعم واجهة برمجة تطبيقات Google Elevation JSONP (بفضل Nick Craver على التفسير) ولا يمكنني استخدام Elevationservice المتوفرة فقط في واجهة برمجة تطبيقات V3 Google Maps.

لذلك قررت استخدام خدمة ويب أخرى للحصول على الارتفاع:

http://www.geonames.org/export/web-services.html#astergdem

مثال : http://ws.geonames.org/astergdemson؟lat=x&lng=y&callback=?

تدعم خدمة الويب هذه JSONP ، بحيث يمكن استخدامها بسهولة مع jQuery وطريقة GetJson.

بنيامين

نصائح أخرى

لا يدعم API JSONP ، إنها تعيد JSON فقط ... لذا نعم ستحتاج إلى الوكيل في هذه الحالة.

أن تكون واضحا ، صحيح سيكون الاستجابة هكذا:

someFunction({
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
})

يستبدل jQuery callback=? مع callback=someFunction, ، لكن Google لا تستخدم هذه المعلمة لأن هذه الخدمة لا تدعم JSONP ... وبالتالي فإن المشكلة هي أنك على نحو فعال فعل هذا:

<script type="text/javascript">
{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}
</script>

مما يؤدي إلى خطأ ، لأن هذا غير صالح JavaScript ... تحصل على خطأ تسمية غير صالح. إذا كان لديه غلاف الوظيفة هناك ، فهو سيكون كن صالحًا وسيقوم بتنفيذ هذه الوظيفة التي تم إجراؤها (من الخاص بك success أتصل مرة أخرى).

يجب عليك استخدام فئة G̶eo̶o̶l̶o̶c̶t̶i̶o̶n̶ Elevationservice من JavaScript API. ليست هناك حاجة للوكالة.

http://code.google.com/apis/maps/documentation/javaScript/Reference.html#elevationservice

كما قال chris Broadfoot ، هناك فصل خاص لذلك في API V3 مثال أفضل هنا https://developers.google.com/maps/documentation/javaScript/elevationلا تحتاج إلى التعامل مع JSONP ولا خدمة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top