2012-04-29 2 views
0

Im пытается геокодировать в моем коде javascript против API геокодирования. Я получаю url var url = "http://http://maps.googleapis.com/maps/api/geocode/json?address=New York, Manhattan&sensor=false" , из которого мне нужно получить объект JSON. Первый подход, который я использовал был согласно Википедии, используя XmlHttpRequest как этотПростейший (или, по крайней мере, один функциональный) способ инициализации JSON obejct из URL (API геокодирования)

var my_JSON_object = {}; 
var http_request = new XMLHttpRequest(); 
http_request.open("GET", url, true); 
http_request.onreadystatechange = function() { 
    var done = 4, ok = 200; 
    if (http_request.readyState == done && http_request.status == ok) { 
     my_JSON_object = JSON.parse(http_request.responseText); 
    } 
}; 

Я бегу код и получить такой вывод в отладчик после открытой функции() была вызвана:

http_request: XMLHttpRequest 
onabort: null 
onerror: null 
onload: null 
onloadend: null 
onloadstart: null 
onprogress: null 
onreadystatechange: function() { 
readyState: 1 
response: "" 
responseText: "" 
responseType: "" 
responseXML: null 
status: [Exception: DOMException] 
statusText: [Exception: DOMException] 
upload: XMLHttpRequestUpload 
withCredentials: false 
__proto__: XMLHttpRequest 

, что означает, что нет ничего на самом деле полезно очевидно, произошло. Мой второй подход был обусловлен json.org, Ive пытался сделать получить колл с JSONRequest

var requestNumber = JSONRequest.get(
url, 
function (requestNumber, value, exception) { 
    if (value) { 
     document.write(value); 
    } else { 
     document.write(exception); 
    } 
} 

Debugger сказал мне, что JSONRequest не определен! Из-за json.org его собственный объект JS, так что проблема? Как раз заметить, я использую правильно полученный ключ API из Google в ближайшем скрипте.

Объяснение, почему мое решение не удалось, и любое предложение о том, как выполнить эту задачу, было бы высоко оценено!

+0

Это, вероятно, только опечатка, но у вас есть «http: //» дважды в начале вашего URL-адреса. – Chris

ответ

0

Я читал о таких хаках, как cross domain XHR и Apache/HTTP proxies, но вывод заключается в том, что Javascript API V3 geocoding является вашим единственным реалистичным вариантом. Этот комментарий, (from here) пока не авторитетный, показывает, что такие JSON запросы не работают:

Можно было бы разумно ожидать, API Карт Google, чтобы Междоменное доступ, который он не сделал до недавнего времени. Теперь это уже не позволяет; Я предполагаю, что они утверждают соображения безопасности, но я также предполагаю, что реальная причина: обязывает вас использовать только свой код, чтобы получить их обслуживание. Таким образом, только способ получить данные через javascript от клиента - использовать Google javascript api, который в любом случае дает вам практически ту же гибкость , что и прямой вызов api url.

This question имеет самую полезную информацию.

 Смежные вопросы

  • Нет связанных вопросов^_^