Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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 错误处理不在Chrome中使用HTML5地理定位_Javascript_Html_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 错误处理不在Chrome中使用HTML5地理定位

Javascript 错误处理不在Chrome中使用HTML5地理定位,javascript,html,google-maps,google-maps-api-3,Javascript,Html,Google Maps,Google Maps Api 3,我有一个简单的地图,只要允许HTML5地理定位,它应该以用户的位置为中心加载。如果他们不选择让我们看到他们的位置,但由于某种原因,它不起作用,那么就有一个适当的功能 代码如下: var x = document.getElementById("msg"); function getLocation() { if (Modernizr.geolocation) { navigator.geolocation.getCurrentPosition(s

我有一个简单的地图,只要允许HTML5地理定位,它应该以用户的位置为中心加载。如果他们不选择让我们看到他们的位置,但由于某种原因,它不起作用,那么就有一个适当的功能

代码如下:

 var x = document.getElementById("msg");
    function getLocation() {
        if (Modernizr.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition, showError);
        }
        else { x.innerHTML = "Geolocation is not supported by this browser."; }
    }
    function showPosition(position) {
        var mapOptions = {
            center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
            zoom: 10,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("Map"), mapOptions);
        var acOptions = {
            types: ['establishment']
        };
        var autocomplete = new google.maps.places.Autocomplete(document.getElementById('autocomplete'), acOptions);
        autocomplete.bindTo('bounds', map);
        var infoWindow = new google.maps.InfoWindow();
        var marker = new google.maps.Marker({
            map: map
        });
        google.maps.event.addListener(autocomplete, 'place_changed', function () {
            infoWindow.close();
            var place = autocomplete.getPlace();
            if (place.geometry.viewport) {
                map.fitBounds(place.geometry.viewport);
            } else {
                map.setCenter(place.geometry.location);
                map.setZoom(17);
            }
            marker.setPosition(place.geometry.location);
            infoWindow.setContent('<div><strong>' + place.name + '</strong><br />');
            infoWindow.open(map, marker);
            google.maps.event.addListener(marker, 'click', function (e) {
                infoWindow.open(map, marker);
            });
        });
    }

    function showError(error) {
        switch (error.code) {
            case error.PERMISSION_DENIED:
                x.innerHTML = "User denied the request for Geolocation."
                break;
            case error.POSITION_UNAVAILABLE:
                x.innerHTML = "Location information is unavailable."
                break;
            case error.TIMEOUT:
                x.innerHTML = "The request to get user location timed out."
                break;
            default:
                x.innerHTML = "An unknown error occurred."
                break;
        }
    }
    google.maps.event.addDomListener(window, 'load', getLocation);
var x=document.getElementById(“msg”);
函数getLocation(){
if(现代化地理定位){
navigator.geolocation.getCurrentPosition(showPosition,showError);
}
else{x.innerHTML=“此浏览器不支持地理位置。”;}
}
功能显示位置(位置){
变量映射选项={
中心:新的google.maps.LatLng(position.coords.latitude,position.coords.longitude),
缩放:10,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“map”)、mapOptions);
变量A选项={
类型:[“机构”]
};
var autocomplete=new google.maps.places.autocomplete(document.getElementById('autocomplete'),acOptions);
autocomplete.bindTo('bounds',map);
var infoWindow=new google.maps.infoWindow();
var marker=new google.maps.marker({
地图:地图
});
google.maps.event.addListener(自动完成,'place\u changed',函数(){
infoWindow.close();
var place=autocomplete.getPlace();
if(place.geometry.viewport){
map.fitBounds(place.geometry.viewport);
}否则{
地图。设置中心(地点。几何。位置);
map.setZoom(17);
}
标记器.设置位置(位置.几何.位置);
infoWindow.setContent(“”+place.name+”
); 信息窗口。打开(地图、标记); google.maps.event.addListener(标记,'click',函数(e){ 信息窗口。打开(地图、标记); }); }); } 功能错误(错误){ 开关(错误代码){ 案例错误。权限被拒绝: x、 innerHTML=“用户拒绝了地理位置请求。” 打破 案例错误。位置不可用: x、 innerHTML=“位置信息不可用。” 打破 大小写错误。超时: x、 innerHTML=“获取用户位置的请求超时。” 打破 违约: x、 innerHTML=“发生未知错误。” 打破 } } google.maps.event.addDomListener(窗口'load',getLocation);

当然,主体中有一个id为msg的
元素。

您可能注意到它在FF中没有触发,因为他们认为“现在不”不应该触发错误-请参见此处(最后一个响应说“停止重新打开此错误,我们这样做是出于设计”):

但是

Timeout是
navigator.geolocation.getCurrentPosition
的options参数(可选第三个参数)的可接受属性。所以
navigator.geolocation.getCurrentPosition(showPosition,showError,{timeout:8000})
是在8秒钟的“不活动”后到达
淋浴ROR
的方法,在firefox的情况下,这意味着“不明确回答yes或never”


PS-询问并回答:

可能重复感谢您的提示。然而,我在Chrome中遇到了这个问题。在Chrome中只有两个选项:允许或拒绝。奇怪的是,它在Chrome中对我有效(Mac-mountain lion,Chrome 28.0.1500.95,也是今天早上的Canary)。你的系统/浏览器的规格是什么?嗯,这很奇怪。我在Win 8 Pro上运行的是Chrome版本28.0.1500.95 m(不确定这是否与您的相同,或者“m”是否意味着什么)。