当URL包含参数时启用Google Map Directions

时间:2014-02-21 09:19:16

标签: javascript google-maps

我已经安排了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);
        }
    });
}

2 个答案:

答案 0 :(得分:1)

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

 function calcRoute(ev) {

     // var declarations

     ev.preventDefault();

     // other stuff that's getting directions
}

因为它是一个表单,所以当您单击该提交按钮时,它想要提交表单。由于您正在处理客户端表单的处理,因此使用preventDefault阻止默认操作。

答案 1 :(得分:0)

如果您使用的是Google Maps API,肯定会使用浏览器默认语言设置,以便在不需要您输入的情况下对其进行本地化。除非您没有使用Maps API,否则此评论无用。