Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将繁重的地理编码转移给web工作者?_Javascript_Web Worker_Here Api_Geocode - Fatal编程技术网

Javascript 如何将繁重的地理编码转移给web工作者?

Javascript 如何将繁重的地理编码转移给web工作者?,javascript,web-worker,here-api,geocode,Javascript,Web Worker,Here Api,Geocode,我有一个非常大的地理点列表,我想用地理编码器将其转换为坐标,我认为最好的方法是将任务转移给网络工作者,否则Firefox会超时,永远不会加载页面 // the main html file: var myWorker = new Worker('datapointscollection.js'); myWorker.onmessage = function(e) { document.getElementById('loadingStatus').innerHTML = coun

我有一个非常大的地理点列表,我想用地理编码器将其转换为坐标,我认为最好的方法是将任务转移给网络工作者,否则Firefox会超时,永远不会加载页面

// 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);
//主html文件:
var myWorker=new Worker('datapointscolection.js');
myWorker.onmessage=函数(e){
document.getElementById('loadingStatus')。innerHTML=count+“来自“+all+”的元素已准备就绪。”;
如果(计数==全部){
myWorker.terminate();
myWorker=未定义;
}
};
myWorker.postMessage([geocodingParams]);
//worker js文件:
自导入文件(“http://js.api.here.com/v3/3.0/mapsjs-core.js");
自导入文件(“http://js.api.here.com/v3/3.0/mapsjs-service.js");
自导入文件(“http://js.api.here.com/v3/3.0/mapsjs-ui.js");
自导入文件(“http://js.api.here.com/v3/3.0/mapsjs-mapevents.js");
self.addEventListener(
"讯息",,
职能(e){
var计数=0;
var-all=0;
//初始化平台对象:
var平台=新的H.service.platform({
'应用程序id':'我的应用程序id',
“应用程序代码”:“myappCODE”
});
var geocoder=platform.getGeocodingService();
var onResult=函数(result){};
var findLocations=函数(geocodingParams){
var i=0;
all=地理编码参数长度;

对于(i=0;i,您导入到worker中的文件似乎依赖于现有的DOM。您的web worker没有DOM,因此您必须使用不需要DOM的依赖项(如果它在节点中工作,则在没有DOM的情况下工作)。请查看文档中的依赖项,查看是否有一个版本可以在node中工作或不需要DOM,并在web worker中使用该版本。(它可能只是
mapsjs service.js
文件。请查看您是否可以这样做)


对于大量的地理编码,请参阅

>P>,你应该考虑批量地理编码。 查看developer.here.com上的开发者指南