如何使用Gmap在浏览器地理位置中处理用户审批
How to handle user approval in browser geolocation with Gmap?
我正在构建一个HTML5地理定位函数和Gmap。
在等待用户批准进行地理定位时,我遇到了一个小问题:浏览器会询问用户是否希望进行地理定位。当他点击"是"时,他被地理定位,但gmap的事情不会触发,地图也不会显示在屏幕上。然后,如果他刷新它,一切都很好。这种情况尤其发生在手机上。
我在处理地理定位时给出了一段代码:
<script>
// <!-- GOOGLE MAPS & POSITION -->
var radius = 1;
var map;
var position;
jQuery(window).ready(function(){
//If we click on Find me Lakes
jQuery("#btnInit").click(initiate_geolocation);
initiate_geolocation();
$('#radius').change(function(v){
handle_geolocation_query(position);
});
});
function initiate_geolocation() {
if (navigator.geolocation)
{
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyBbfJJVh0jL1X9b7XFDcPuV7nHD1HlfsKs&sensor=true&callback=initialize";
document.body.appendChild(script);
navigator.geolocation.getCurrentPosition(append_google_map, handle_errors);
}
else
{
yqlgeo.get('visitor', normalize_yql_response);
}
}
function handle_errors(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED: alert("user did not share geolocation data");
break;
case error.POSITION_UNAVAILABLE: alert("could not detect current position");
break;
case error.TIMEOUT: alert("retrieving position timedout");
break;
default: alert("unknown error");
break;
}
}
function append_google_map(pos){
position = pos;
var mapOptions = {
zoom: 15,
center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
streetViewControl: false,
mapTypeId : google.maps.MapTypeId.ROADMAP
}
if (typeof map == 'undefined') { //We make sure the map object hasn't been toogled to the page
map = new google.maps.Map(document.getElementById("gmap"), mapOptions);
//$('#gmap').slideToggle('slow');
setMarkerPosition(position.coords.latitude, position.coords.longitude);
}
handle_geolocation_query();
}
正如你在这里看到的,我在initiate函数中用一个错误回调和一个成功回调来启动地理定位。这时,用户的屏幕上会出现一个弹出窗口,询问他是否同意地理定位。即使他单击"是",代码的某些部分似乎也没有被触发(或者我们被重定向到handle_errors dunno),因此,地图不会出现在屏幕上(在append_google_map中的代码中会进一步处理)。
有人能帮我弄清楚为什么会发生这种事,以及如何处理吗?
非常感谢
你不能,这是一个安全功能。您的代码必须等待用户批准或拒绝他们是否要共享自己的位置。
您的代码必须能够对用户的两个响应作出反应。如果他们选择不共享你的代码,你可以尝试回退到城市的坐标,或者显示一些消息。
页面上有一条消息告诉他们分享他们的位置是可以的,前提是你向他们解释他们为什么与你分享他们的地点。
相关文章:
- 在Nodejs中为许多用户处理计时器
- 如何处理用户关闭地理位置弹出窗口时的情况
- 如何使用QT Quick处理用户数据
- Javascript:处理用户生成脚本的最佳方式
- 在节点上设置OAuth2 - 在MongoDB中处理用户的最简单方法
- 警报不处理用户输入
- 预防'内容嗅探'处理用户上传的图像时存在类型漏洞
- 如何处理用户在Firefox和Chrome中关闭“物理位置”提示
- 网站的Facebook登录:处理用户Facebook注销的最佳实践
- 如何使用Gmap在浏览器地理位置中处理用户审批
- 如何处理用户上传的图像
- 在backbone.js应用程序中处理用户
- 如何让AngularJS自定义过滤器处理用户输入?
- 如何处理用户在Javascript中添加注释
- 用mongoDB处理用户活动提要
- 使用Facebook Javascript SDK处理用户会话
- 如何通过浏览器返回按钮处理用户到达页面
- 如何使用每个函数的map以特定的顺序处理用户
- 如何处理用户信息使用firebase简单登录为facebook
- 处理用户是否登录