Google Maps API - 意外重定向

Posted

技术标签:

【中文标题】Google Maps API - 意外重定向【英文标题】:Google Maps API - unexpected redirection 【发布时间】:2014-04-28 21:44:52 【问题描述】:

在执行这段代码后,我遇到了到 localhost:xxxx/Home/null 的意外重定向。是什么原因?

这是我的 html

<div id="userConsentSection">
Can we use your geolocation? <br />
    <input type="button" id="yes" value="Yes" />
    <input type="button" id="no" value="No" /><br /><br />
</div>

<div id="setCustomLocationSection">
    Enter your address manually.<br />
    <input type="text" id="customLocation" />
    <input type="button" id="setCustomLocationButton" value="Show" /><br /><br />
</div>

<div id="map" style="height: 450px; width: 720px" />

JS:

var map1 = null;
var location = null;

alert("alert4");

function initialize() 
    alert("alert5");
    $("#setCustomLocationSection").hide();

    var options =
        
            center: new google.maps.LatLng(0, 0),
            zoom: 2
        

    var marker = new google.maps.Marker(
        position: new google.maps.LatLng(0, 0),
        map: map,
        title: "Marker 0,0"
    );

    map1 = new google.maps.Map(document.getElementById("map"), options)

    marker.setMap(map);


alert("alert3");

$("#yes").click(function () 
    $("#userConsentSection").hide();
    getPosition();
    reloadMap();
);

$("#no").click(function () 
    $("#userConsentSection").hide();
    showSetCustomLocationSection();
);

function showSetCustomLocationSection() 
    $("#setCustomLocationSection").show();


function getPosition() 

    var options = 
        enableHighAccuracy: true,
        timeout: 20000,
        maximumAge: 2000
    

    navigator.geolocation.getCurrentPosition(showPosition, errorPosition, options);


function showPosition(position) 
    if (position) 
        location = position.coords;
    


function errorPosition(position) 
    switch (position.code)
    
        case 1:
            showSetCustomLocationSection();
            break;
        case 2:
            showSetCustomLocationSection();
            break;
        case 3:
            showSetCustomLocationSection();
            break;
        default:
            break;
    


function reloadMap()

    map1 = null;

    var options =
        
            center: new google.maps.LatLng(location.latitude, location.longitude),
            zoom: 8
        

    map1 = new google.maps.Map(document.getElementById("map"), options)


alert("alert2");

google.maps.event.addDomListener(window, 'load', initialize);

我已插入警报以显示哪些代码已执行,哪些未执行。似乎最后一个事件方法有问题,但我不知道是什么,没有注意到任何错字。有什么想法吗?

【问题讨论】:

您的默认位置为空。也许您应该设置一个,以防用户不允许跟踪他们的地理位置。这是一个开始。 location 是 javascript 中的保留字...设置它可能会导致问题。 谢谢@geocodezip - 这导致了这个问题。 它本身不是保留字,但它已经在window 对象中声明。并且您的 Javascript 的范围在 window 内,因此当您设置 location = null 时,您只需覆盖 window.location,因为您的 Javascript 解释器(浏览器)将该行读取为 window.location = null 您可以通过将 location 声明为 var 来解决问题,以避免与 window.location 冲突 【参考方案1】:

Location 是窗口对象的 javascript 中的保留字 属性,因此会将浏览器重定向到 /position.coords;

感谢@peter 的澄清

【讨论】:

不是保留字而是窗口对象的属性 感谢您接受。我已经更正了我的答案。

以上是关于Google Maps API - 意外重定向的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps API 文本搜索位置

Linux 第三天 重定负管道符环境变量

使用 Restriction for Ionic 应用程序保护 Google Maps API 密钥

017_nginx重定向需求

如何在 Google Maps API 上强制重绘?

Google Maps Api在重命名包名称后无法识别包名称-Android