我正在编写我编写的应用程序的模块化过程。这适用于空间位置
我正在使用一个事件来查询用户的lat / lon位置,以便在应用程序中使用。我的呼叫片段在下面(按钮点击启动它)
<script>
require([
'dojo/dom',
'dojo/_base/array',
'demo/testModule',
'esri/SpatialReference',
'esri/geometry/Point'
], function (
dom,
arrayUtils,
testModule,
SpatialReference,
Point
) {
//Here is the button click listener
$('#whereAmIButton').click(function () {
var spatialRef = new esri.SpatialReference({ 'wkid': 4326 });
//variable I want to set to a returned geometry.
var myGeom;
//This runs but I'm missing the boat on the return of a value
testModule.findUserLocPT(spatialRef);
//var myModule = new testModule(); //not a constructor
});
});
</script>
这是自定义模块。它将信息记录到控制台以获取用户的位置。但我想返回设置'myGeom'变量的值。
define(['dojo/_base/declare','dojo/_base/lang','dojo/dom',
'esri/geometry/Point','esri/SpatialReference'], function (
declare, lang, dom, Point, SpatialReference) {
return {
findUserLocPT: function (spatialRef) {
var geom;
var location_timeout = setTimeout("geolocFail()", 5000);
navigator.geolocation.getCurrentPosition(function (position) {
clearTimeout(location_timeout);
var lat = position.coords.latitude;
var lon = position.coords.longitude;
setTimeout(function () {
geom = new Point(lon, lat, spatialRef);
//console.log writes out the geom but that isnt what I am after
console.log(geom);
//I want to return this value
return geom;
}, 500);
});
function geolocFail() {
console.log("GeoLocation Failure");
}
}
}//end of the return
});
欢迎任何帮助。我可以通过引用来更改文档上的textual / html值,但不会将其作为变量返回。
安迪
答案 0 :(得分:0)
好的,我不知道这是不是最好的&#39;回答,但我现在有一个。
我在&#39; test.html&#39;中添加了一个全局变量。页
<script>
var theGeom; //This is the variable
require([
'dojo/dom',
这里是我设置此变量的值的地方,用于原始道场&#39;要求&#39;代码块。这来自于&#39; testModule.js&#39;
setTimeout(function () {
geom = new Point(lon, lat, spatialRef);
theGeom = geom; //Here is the feedback of the value to the global variable.
return myGeom;
}, 500);
$('#whereAmIButton').click(function () {
var spatialRef = new esri.SpatialReference({'wkid':4326});
testModule.findUserLocPT(spatialRef);
setTimeout(function () {
console.log(theGeom); //here is the value set and ready to use
},2000);
});
我不确定这是不是最好的方法。如果你有更好的东西请告诉我。
安迪