Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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 在angularjs中使用地理定位_Javascript_Angularjs_Geolocation - Fatal编程技术网

Javascript 在angularjs中使用地理定位

Javascript 在angularjs中使用地理定位,javascript,angularjs,geolocation,Javascript,Angularjs,Geolocation,我发现,您必须使用我认为是一种解决方法来从浏览器API获取地理位置数据。我的问题是,当我可以在控制台日志中看到输出数据时,为什么不能以正常方式访问它 例如,在这种情况下,会输出lat和long,但“mapoutput”永远不会更新: function get_location() { navigator.geolocation.getCurrentPosition(show_map); console.log('nav: ', navigator); } function show_m

我发现,您必须使用我认为是一种解决方法来从浏览器API获取地理位置数据。我的问题是,当我可以在控制台日志中看到输出数据时,为什么不能以正常方式访问它

例如,在这种情况下,会输出lat和long,但“mapoutput”永远不会更新:

function get_location() {
  navigator.geolocation.getCurrentPosition(show_map);
  console.log('nav: ', navigator);
}

function show_map(position) {
  var latitude = position.coords.latitude;
  var longitude = position.coords.longitude;

  self.mapoutput = "http://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false";
  console.log("latitude: ", latitude);
  console.log("longitude: ", longitude);
}

get_location();

我认为show\u映射是异步回调,那么为什么self.mapoutput没有正确更新?

Angular仅在运行
$digest
时更新数据绑定。对于通过Angular函数设置的回调,Angular代码已经完成了这项工作。如果超出Angular,则必须通过在调用中包装回调主体来完成此操作。

Angular仅在运行
$digest
时更新数据绑定。您是否尝试将分配包装到调用中?好的,谢谢,我添加了:$scope.$apply(function(){$scope.mapoutput=“blahstringpositionhere”;});并让它发挥作用。那么,这会触发更新的摘要方法?为什么这个特定场景需要这样做?尝试通过jquery/documentid进行更新也差不多,不是吗?请随意将代码重新发布为答案,以便我可以将其标记为正确。