JS 地理定位和存储

Posted

技术标签:

【中文标题】JS 地理定位和存储【英文标题】:JS Geolocation and Storage 【发布时间】:2014-11-13 18:34:10 【问题描述】:

这是我的代码 http://jsfiddle.net/#&togetherjs=mjFbd89fzF

$(document).ready(function () 

    if (navigator.geolocation) 

    
    if (typeof (localStorage) != "undefined") 

        navigator.geolocation.getCurrentPosition(function (position) 
            localStorage.setItem('latitude', position.coords.latitude);
            localStorage.setItem('longitude', position.coords.longitude);
        );

        $('#location').innerhtml = localStorage.getItem('latitude') + ' ' + localStorage.getItem('longitude');

    
);

这是 HTML

<BODY>
        <h1>you're here</h1>

        <h2 id="location"></h2>

</BODY>

系统提示我分享我的位置,但即使位置存储在本地存储中,h2 标记也不会更新

【问题讨论】:

【参考方案1】:

getCurrentPosition是异步函数,会在$('#location')之后执行,你可以将它存储在本地存储中,但是这个数据将在第二个页面加载后可用,你可以在getCurrentPosition中设置$('#location')或者你可以使用Deferred.

#1
$(document).ready(function () 
 if (navigator.geolocation) 

  navigator.geolocation.getCurrentPosition(function (position) 
   $('#location').html(position.coords.latitude + ' ' + position.coords.longitude);
  );
);

#2
$(document).ready(function () 
  var d = $.Deferred();

  if (navigator.geolocation) 

  navigator.geolocation.getCurrentPosition(function (position) 
    d.resolve(position.coords.latitude, position.coords.longitude);
  );

  d.done(function(latitude, longitude)  
    $('#location').html(latitude + ' ' + longitude);
  );
);

Example

【讨论】:

以上是关于JS 地理定位和存储的主要内容,如果未能解决你的问题,请参考以下文章

Safari 中的 html5 地理定位错误

HTML / JS 地理定位和比较坐标

使用 html5 地理定位 api 创建地理围栏

JS新API标准 地理定位(navigator.geolocation)

手机js页面实现一键定位,并且把获取的地理位置显示到文本框中,如下图,100分

手机地理定位和javascript