0

Freebase API http://smartsearch.kd.ioを読みたいです。なんとか一部を実行できましたが、地理位置情報の座標を取得してマップを作成したいのですが、うまくいかないようです。

ここに私のJSコードがあります:

    $.getJSON("https://www.googleapis.com/freebase/v1/topic/en/paris?filter=/location/location/geolocation&key=AIzaSyAMWOvyMSupZsOHordVo1EawZbSkEySNVA&callback=?", function(data) {
                var card = $("<div>").attr({"class":"card"});
                var latlon=data.property["/location/location/geolocation"].values[0].text.split(" - ")[0] +","+data.property["/location/location/geolocation"].values[0].text.split(" - ")[1];
                var img_url="http://maps.googleapis.com/maps/api/staticmap?center="+latlon+"&zoom=14&size=400x300&sensor=false";
                var imgel = $("<img>").attr("src",img_url);
                imgel.appendTo(card);
                card.appendTo("body");
        });

必要な追加情報:
- smartsearch では、paris の代わりに $("#searchinput").val() を使用していることに注意してください。
- Google マップが原因ではないと思います。
- Web サイトから他のデータを取得できたので、クロス オリジン リクエストは問題ではありません
- JSON ファイル (Jquery によって解析されたコールバック パラメータを削除): https://www.googleapis.com/freebase/v1/topic/en/paris ?filter=/location/location/geolocation&key=AIzaSyAMWOvyMSupZsOHordVo1EawZbSkEySNVA
- 完全な JS コードが必要な場合は、 smartsearch.kd.io/js/script.js にアクセスしてください
- サイトがオフラインの場合、それはおそらくコード制限です (サイトは 15 分後にシャットダウンします) koding からのサインアウト)

4

1 に答える 1

0

この種のテストを複数回行うようです:

if(data.property['/people/person/parents'].values.length) {
if(data.property['/people/person/children'].values.length) {
if(data.property['/people/person/sibling_s'].values.length) {
if(data.property["/location/location/geolocation"].values.length) {

これがあなたのコードが失敗している場所です。重複したコードを削除しながら、このテストの信頼性と安定性を高める必要があります。

ここにヘルパー関数があります

function dataHasProperty(data, property) {
    if (!data.hasOwnProperty(property)) return false;
    if (!data[property].hasOwnProperty('values')) return false;
    return data[property].values.length;
}

そして、改善されたテストは次のとおりです。

if(dataHasProperty(data, '/people/person/parents')) {
if(dataHasProperty(data, '/people/person/children')) {
if(dataHasProperty(data, '/people/person/sibling_s')) {
if(dataHasProperty(data, '/location/location/geolocation')) {
于 2013-07-09T14:50:35.957 に答える