Javascript 当URL有参数时启用Google地图方向

Javascript 当URL有参数时启用Google地图方向,javascript,google-maps,Javascript,Google Maps,我已经解决了谷歌地图经销商定位器显示经销商在世界各地。当你点击经销商的精确定位时,你会看到一个信息框,其中有一个链接,可以打开一个面板来计算某个出发地点(用户必须填写)和经销商之间的方向 这很有效 我的问题是,我必须使此定位器可翻译和自定义(例如,以特定国家为中心),因此我选择通过在URL中传递参数来实现这一点(即:要获得以德国为中心的德语版本,URL将类似于mylocator.com/?lang=de&country=Germany) 现在,当我使用带有这些参数的定位器并尝试向经销商获取方向时

我已经解决了谷歌地图经销商定位器显示经销商在世界各地。当你点击经销商的精确定位时,你会看到一个信息框,其中有一个链接,可以打开一个面板来计算某个出发地点(用户必须填写)和经销商之间的方向

这很有效

我的问题是,我必须使此定位器可翻译和自定义(例如,以特定国家为中心),因此我选择通过在URL中传递参数来实现这一点(即:要获得以德国为中心的德语版本,URL将类似于mylocator.com/?lang=de&country=Germany)

现在,当我使用带有这些参数的定位器并尝试向经销商获取方向时,出现了某种错误,使网页刷新到没有参数的URL(如mylocator.com/#)。我没有方向

你知道是什么导致了这一切吗

以下是我使用的一些代码:

HTML:

<body onload="load()">
    <section class="navbar">
        some code to display a form for dealer's selection and display
    </section>
    <section id="directions-panel">
        <div id="routecontent">
            <div>
                <form onsubmit="calcRoute();">
                    <input type="text" id="start">
                    <input type="text" id="end">
                    <button type="submit"></button>
                </form>
            </div>
            <div>
                <div id="mypanel"></div>
            </div>
        </div>
    </section>
    <section id="map"></section>

如果您使用的是Google Maps API,那么它肯定会使用浏览器的默认语言设置来进行本地化,而不需要您的输入。除非您没有使用Maps API,否则在这种情况下,此注释是无用的。

尝试对传递给提交处理程序的事件添加preventDefault()调用:

 function calcRoute(ev) {

     // var declarations

     ev.preventDefault();

     // other stuff that's getting directions
}

因为它是一个表单,所以它希望在您单击“提交”按钮时提交表单。由于您正在处理表单客户端的处理,请使用preventDefault阻止默认操作。

根据对问题的描述,我认为这里还没有足够的信息。例如,如果单击了一个href值只有“#”的链接,那么该url听起来就像是您得到的。您能详细介绍一下出现此问题时会发生什么吗?“#”来自我编写的jQuery函数,当您单击信息框中的链接时,它会显示方向面板。默认情况下,此面板是隐藏的。因此,首先URL是mylocator.com/?lang=de&country=germany,然后单击信息框中的链接,转到mylocator.com/?lang=de&country=germany,然后在方向面板中填写表单并提交,然后在URL mylocator.com/?上刷新页面。当我使用URL后面没有参数的定位器(默认显示)时,我没有错误,方向显示正确。我使用的是API,但转换也会形成地图周围的所有HTML(面板、表单、信息框详细信息…)。所以我是处理此事的人。太好了,我试试这个,然后再打给你。我没有想到这一点,它看起来像是一个可能的原因。太好了,它就像一个符咒!我将calcRoute()函数更改为:$(“#myform”).submit(函数(事件){event.preventDefault();var start=document.getElementById('start').value;var end=document.getElementById('end').value;var请求={起点:起点:起点,终点:终点,旅行模式:google.maps.travelMode.DRIVING};directionsService.route(请求、函数(响应、状态){if(状态==google.maps.DirectionsStatus.OK){directionsDisplay.setDirections(响应);}}}}});
 function calcRoute(ev) {

     // var declarations

     ev.preventDefault();

     // other stuff that's getting directions
}