我已经安排了Google地图经销商定位器,该定位器可以显示全球各地的经销商。当你点击经销商的精确点时,你会得到一个信息框,其中有一个链接打开一个面板来计算某个出发地点(用户必须填写它)和经销商之间的路线。
这很好用。
我的问题是,我必须使这个定位器可以翻译和定制(例如以特定国家为中心),所以我选择通过在URL中传递参数来实现这一点(即:以德国为中心获得德语版本,该URL类似于mylocator.com/?lang=de&country=germany)。
现在,当我使用带有这些参数的Locator并尝试向经销商发送指示时,会出现某种错误,使网页刷新到没有参数的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>
JS:
function load() {
directionsService = new google.maps.DirectionsService();
var myOptions = {
center: centrage,
zoom: zooming,
}
map = new google.maps.Map(document.getElementById("map"), myOptions);
directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById("mypanel"));
}
function calcRoute() {
var start = document.getElementById('start').value;
var end = document.getElementById('end').value;
var request = {
origin: start,
destination: end,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
答案 0 :(得分:1)
尝试在传递给提交处理程序的事件上添加preventDefault()调用:
function calcRoute(ev) {
// var declarations
ev.preventDefault();
// other stuff that's getting directions
}
因为它是一个表单,所以当您单击该提交按钮时,它想要提交表单。由于您正在处理客户端表单的处理,因此使用preventDefault阻止默认操作。
答案 1 :(得分:0)
如果您使用的是Google Maps API,肯定会使用浏览器默认语言设置,以便在不需要您输入的情况下对其进行本地化。除非您没有使用Maps API,否则此评论无用。