1

这是我现在用来调用 Google Maps API 的代码:

function initialize() {
var myLatlng = new google.maps.LatLng(41.88994,12.51383);

var mapOptions = {
zoom: 16,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Studio medico'
});
}

function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?sensor=false&' + 'callback=initialize';
document.body.appendChild(script);
}

window.onload = loadScript;

你可以在这里看到这个。如果您尝试单击“(calcola percorso)”,则在“Mezzi pubblici”附近会出现一个输入框。这是起始地址 (saddress) 参数,因为“前往”按钮会将您带到 Google 地图网站和 Transit 服务(并通过 Transit 将您带到从您输入的地址开始的“硬编码”目的地地址)。

现在,是否可以直接在使用上述脚本调用的地图中启动 Transit(无需访问 Google 地图网站)?让用户在输入表单中输入他们的地址,单击“Go”,然后让上面的地图在 Transit 模式下“打开”我指定的目标地址但用户选择的起始地址(从输入表格)。

4

1 回答 1

1

是的,你可以这样做。您需要在 Maps API 中使用该Directions服务。这是一个示例页面

好的,到目前为止一切顺利!我查看了您的最新代码,您肯定走在正确的轨道上(双关语)。正如我在评论中提到的,问题在于您calcRoute()为选择/选项案例和文本输入表单调用了相同的函数。

您可以为每种情况将其分解为单独的函数,也可以使用相同的函数但只为每个函数传入元素 ID。为此,我会给您的文本输入字段一个 ID:

<input type="text" id="startText" name="start" placeholder="Start address">

然后更改您的选择元素以传递其 ID:

<select id="start" onchange="calcRoute('start');">

并更改文本输入表单:

<form method="get" id="start" onsubmit="calcRoute('startText');" action="#" style="display:inline">

现在只需更改 的开头calcRoute()

function calcRoute( input ) {
    var start = document.getElementById(input).value;
    ... remainder of existing code here ...
}

或者,正如我在评论中提到的,您可以将它们分解为单独的函数,也许是calcRouteFromSelect()and calcRouteFromText(),然后从各自的表单中调用每个函数。这些将各自设置适当的输入地址,然后调用一个通用函数来完成其余的工作。无论哪种方式都会做同样的工作。

于 2013-04-27T20:53:16.563 回答