0

私は最近、html、javascript、webappsなどをいじり始めたばかりで、独自のPreyスタンドアロンWebサーバーを作成してみることにしました。

UIにはTwitterBootstrapを使用し、javascriptにはjQueryを使用しています。[マイレポート]ページにはすべてのレポートが一覧表示され、ユーザーはレポートを1つ選択してマップに表示できます。次に、ページはサーバーからJSONとしてデータを取得します。これはすべて正常に機能します。ただし、電話をかけるとmap.setCenter(new google.maps.LatLng(data['lat'], data['lng']))、その場所に移動するのではなく、地図が灰色に変わります。

私はこれをクロームとファイアフォックスで試しましたが、同じ問題が発生します。不思議なことに、chromeconsole-debugger-thingにもfirebugにもエラーはありません。「同様の質問」の下に、おそらく10の同様の問題が表示されます。ただし、これらのソリューション(CSSなど)はどれも役に立ちませんでした。

これがウェブサイトです(dotCloudのサンドボックスなので、非常に遅いかもしれません):http: //prey-geniass.dotcloud.com/devices/l6wyd/reports.xml

4

2 に答える 2

1

だから私はあなたがマップオブジェクトを次のように保存していることに気づきました(誰もwindow['map']がそれをしているように見えるのはおかしいです...ソースに飛び込む必要がないときにデバッグが簡単になります:))。

既知の座標セットを使用して、自分で中心を設定しようとしました。

map.setCenter(new google.maps.LatLng('51.0453246', '-114.0581012'));

これは正常に機能したため、実際のコードは正常に機能しています。私はいくつかのケースで間違った値をテストしました...nullそして0私を海のどこかに置きましたがundefined、両方についてはマップを灰色にしましたlatlngおそらく、渡した値が正しくなく、最終的にはundefined

alert来る2番目を見ると、関連するプロパティはとですが、latitudelongitudeを渡しているように見えdata['lat']ますdata['lng']。これが理由でしょうか?

これで修正されるはずです:

//update map
marker = new google.maps.Marker({
    position: new google.maps.LatLng(data['latitude'], data['longitude']),
    title:"Last Known Position"
});
marker.setMap(map);
map.setCenter(new google.maps.LatLng(data['latitude'], data['longitude']))
// google.maps.event.trigger(map, 'resize');

'resize'トリガーをコメントアウトしたことに注意してください(おそらく、この問題を解決するために追加したと思いますか?ここで別のユーザーに提案したことを覚えています:))。あなたの場合は必要ありません。

于 2012-12-14T17:03:51.020 に答える
0

わかりました、私はちょうど問題を見つけました。応答をJSONとしてマークしなかったのは実際にはサーバー側だったので、javascriptは実際に文字列を受信し、それをJSONオブジェクトとして使用しようとしていました。Flaskを使用している人のために、これを行うためのコードは次のとおり return Response(json.dumps(report), mimetype='text/json')です。

今、私は実際にはどちらの答えが正しいものとしてマークするのかわかりません(2つの異なる問題があったので両方とも技術的に正しいです)

于 2012-12-14T17:28:41.730 に答える