首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将繁重的地理编码转移到web-worker?

如何将繁重的地理编码转移到web-worker?
EN

Stack Overflow用户
提问于 2018-12-29 05:54:19
回答 2查看 104关注 0票数 1

我有一个很大的地理点列表,我想要用地理编码器转换成坐标,我认为最好的方法是将任务转移到web worker,否则Firefox超时,永远不会加载页面。

代码语言:javascript
复制
// the main html file:
var myWorker = new Worker('datapointscollection.js');
  myWorker.onmessage = function(e) {
      document.getElementById('loadingStatus').innerHTML = count + " elements from " + all + "are ready.";
      if (count == all) {
        myWorker.terminate();
        myWorker = undefined;
      }
  };

   myWorker.postMessage([geocodingParams]);

// the worker js file:
self.importScripts("http://js.api.here.com/v3/3.0/mapsjs-core.js");
self.importScripts("http://js.api.here.com/v3/3.0/mapsjs-service.js");
self.importScripts("http://js.api.here.com/v3/3.0/mapsjs-ui.js");
self.importScripts("http://js.api.here.com/v3/3.0/mapsjs-mapevents.js");
self.addEventListener(
'message', 
function(e) {
  var count = 0;
  var all = 0;

  // Initialize the platform object:
  var platform = new H.service.Platform({
  'app_id': 'myappID',
  'app_code': 'myappCODE'
  });

  var geocoder = platform.getGeocodingService();

  var onResult = function(result) {};

  var findLocations = function(geocodingParams) {
    var i=0;
    all = geocodingParams.length;
    for (i=0; i<geocodingParams.length; i++) {
      geocoder.geocode(
        geocodingParams[i], 
        onResult, 
        function(e){
            alert(e);
        } );
      count = i;
      self.postMessage(count, all);
    }
  };

  findLocations(e.data[0]);
}, 
false);

我尝试了不同的方法,但执行worker脚本失败,并出现了不同的错误。最后一个问题是ReferenceError:文档没有在mapsjs-core.js:158:623中定义。过了一会儿,又出现了另一个错误: NetworkError:发生了网络错误。来自datapointscollection.js:1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-29 16:02:09

对于大量的地理编码,您应该考虑批量地理编码。请访问developer.here.com查看开发人员指南

票数 2
EN

Stack Overflow用户

发布于 2018-12-29 06:45:43

看起来您要导入到worker中的文件依赖于现有的DOM。您的web worker没有DOM,因此您必须使用不需要DOM的依赖项(如果它可以在节点中工作,那么它将在没有DOM的情况下工作)。检查您的依赖项的文档,看看是否有在节点中工作的版本或不需要DOM的版本,并在您的web worker中使用该版本。(可能只是mapsjs-service.js文件。看看你是否能做到这一点)。

另请参阅Web Workers API

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53964668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档