繁体   English   中英

我如何在 AndroidJS 中使用 OpenLayers?

[英]How can I use OpenLayers in AndroidJS?

我有一个小型应用程序,它使用 OpenLayers 进行某些映射。 该应用程序在我的计算机上运行良好, npm start (如果我理解正确,这将运行vite以执行 HTTP 托管;CMIIW)。

现在我想使用AndroidJS将此应用程序转换为 Android APK。 但是,我似乎不明白这一切是如何协同工作的。 Javascript 模块(这是 OpenLayers 的工作方式)似乎在 AndroidJS 中不起作用。 例如,当我在main.jsimport我的代码时

import { DriveMap, distance, bearing, rad2deg } from './assets/mod_maps.js';

在 Android 模拟器上运行时出现此错误:

01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE: /data/data/com.androidjs.webview/files/myapp/main.js:1
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE: (function (exports, require, module, __filename, __dirname) { import { DriveMap, distance, bearing, rad2deg } from './assets/mod_maps.js';
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:                                                                      ^
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE: 
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE: SyntaxError: Unexpected token {
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at new Script (vm.js:79:7)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at createScript (vm.js:251:10)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at Object.runInThisContext (vm.js:303:10)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at Module._compile (internal/modules/cjs/loader.js:656:28)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at Module.load (internal/modules/cjs/loader.js:598:32)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at Function.Module._load (internal/modules/cjs/loader.js:529:3)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
01-02 15:40:35.385 15659 15778 E NODEJS-MOBILE:     at startup (internal/bootstrap/node.js:286:19)
01-02 15:40:35.392 15659 15778 E NODEJS-MOBILE: [ERROR:mailbox_manager_sync.cc(57)] eglCreateSyncKHR failed

有没有办法使用 OpenLayers 不使用 Javascript 模块,或者如何在 AndroidJS 中使用 Javascript 模块?

您可以将 OpenLayers 用作“正常”javascript,方法是在类的所有名称前加上完整路径:

var map = new ol.Map({
     layers: [
         new ol.layer.Tile({
             source: new ol.source.OSM(),
         }),
     ],
     target: idElement,
     view: new ol.View({
         center: ol.proj.fromLonLat([lon,lat]),
         zoom: zoomLevel
     })
});

这适用于 OpenLayer 库中的所有类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM