Websocketを介してGoogleEarthコントローラーを実装しようとしています。
私はc#に単純なecho websocketsサーバーを持っています。テキストボックスに値を入力すると、それがページに返送されます(後でサーバーから直接データを送信できるようにする予定です)。
グーグルアースを初期化する私のスクリプトはかなり標準的で機能します:
<script type="text/javascript">
google.load("earth", "1");
function init() {
google.earth.createInstance('map3d', initCallback, failureCallback);
StartServer();
}
function initCallback(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
// add a navigation control
ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);
// add some layers
ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);
}
function failureCallback(errorCode)
{
}
</script>
(ge変数)は単なるグーグルアースインスタンスです。
今私のサーバーコードで、私がそうするならば:
ws.onmessage = function (evt)
{
inc.innerHTML += evt.data + '<br/>';
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
lookAt.setLatitude(lookAt.getLatitude() + 10);
lookAt.setLongitude(lookAt.getLongitude() + 20);
ge.getView().setAbstractView(lookAt);
};
すべてが機能します(地球は少し回転します)。
今私がする場合:
ws.onmessage = function (evt)
{
inc.innerHTML += evt.data + '<br/>';
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
lookAt.setLatitude(lookAt.getLatitude() + evt.data); //Here i try to use the data received
lookAt.setLongitude(lookAt.getLongitude() + 20);
ge.getView().setAbstractView(lookAt);
};
例外が発生します:NPObjectでメソッドを呼び出すときにエラーが発生しました
文字列を分割して数値に変換しようとしましたが、常に同じエラーが発生します。
inc.innerHTML += evt.data + '<br/>';
常に動作します。
編集:
私も試しました:var i = parseInt(d); //動作しますが、lを呼び出すとlookAt.setLatitude(i); //例外
助けていただければ幸いです