我正在尝试通过 Websockets 实现 Google 地球控制器。
我在 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); //例外
任何帮助表示赞赏