Google 地图 API - 添加多个目的地不起作用(谷歌方向)

2024-04-24

我在创建/复制谷歌地图方向功能时遇到问题。当我有“从/到”字段时,我可以让它正常工作,但一旦我尝试添加多个目的地,它就不起作用。我看过我们,但我没有得到任何很好的示例教程来展示这是如何完成的。以下是我到目前为止所做的事情。但我很确定这件事做得非常糟糕。任何例子都会很棒。

<linkhref=http://code.google.com/apis/maps/documentation/javascript/examples/default.css"   rel="stylesheet" type="text/css" />

<script src=http://maps.google.com/maps/api/js?sensor=false&amp;key=xxxxx" type="text/javascript"></script>
<script type="text/javascript">
var intTextBox = 0;
//FUNCTION TO ADD TEXT BOX ELEMENT
function addElement() {
intTextBox = intTextBox + 1;

var contentID = document.getElementById('content');
var newTBDiv = document.createElement('div');
newTBDiv.setAttribute(

'id', 'strText' + intTextBox);
newTBDiv.innerHTML =

"Text " + intTextBox + ": <input type='text' id='" + intTextBox + "' name='" + intTextBox + "'/>";
contentID.appendChild(newTBDiv);

}

//FUNCTION TO REMOVE TEXT BOX ELEMENT
function removeElement() {
if (intTextBox != 0) {
var contentID = document.getElementById('content');
contentID.removeChild(document.getElementById(

'strText' + intTextBox));
intTextBox = intTextBox - 1;

}

}

var address = '<%= hdnDefault.Value %>'; //Hidden field contains default city London
var rendererOptions = {
draggable:

true
};

var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions); ;
var directionsService = new google.maps.DirectionsService();
var map;
var mygc = new google.maps.Geocoder();
mygc.geocode({

'address': address },
function(results, status) {
var country1 = results[0].geometry.location.lat();
var country2 = results[0].geometry.location.lng();
var australia = new google.maps.LatLng(country1, country2);
initialize(australia);

}

);

function initialize(australia) {
var myOptions =
{

zoom: 7,

mapTypeId: google.maps.MapTypeId.ROADMAP,

center: australia

};

map =

new google.maps.Map(document.getElementById("map_canvas"), myOptions);
directionsDisplay.setMap(map);

directionsDisplay.setPanel(document.getElementById(

"directionsPanel"));
 google.maps.event.addListener(directionsDisplay,

'directions_changed', function() {
 computeTotalDistance(directionsDisplay.directions);

});

calcRoute();

}

function calcRoute(fromAddress, toAddress) {/*from and to text boxes*/
var request = {
origin: fromAddress,

destination: toAddress,

travelMode: google.maps.DirectionsTravelMode.DRIVING

};

directionsService.route(request,

function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);

}

});

}

function computeTotalDistance(result) {
var total = 0;
var myroute = result.routes[0];
for (i = 0; i < myroute.legs.length; i++) {
total += myroute.legs[i].distance.value;

}

}

function setDirections(fromAddress, toAddress) {
calcRoute(fromAddress, toAddress);

}

function showLocation() {
geocoder.getLocations(document.forms[0].fromAddress.value,

function(response) {
if (!response || response.Status.code != 200) {
alert(

"Sorry, we were unable to geocode the first address");
}

else {
location1 = { lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address };

geocoder.getLocations(document.forms[0].toAddress.value,

function(response) {
if (!response || response.Status.code != 200) {
alert(

"Sorry, we were unable to geocode the second address");
}

else {
location2 = { lat: response.Placemark[0].Point.coordinates[1], lon: response.Placemark[0].Point.coordinates[0], address: response.Placemark[0].address };

gDir.load(

'from: ' + location1.address + ' to: ' + location2.address);
}

});

}

});

}

</script>


<

body onload="initialize()">
<div>
<div id="map_canvas" style="width: 430px; height: 450px; margin-right: 10px;">
</div>
</div>
</div>

/*Contains texboxes and buttons*/

</div>


<div id="directionsPanel" style="text-align: right; width: 900px; height: 100%;">
<p>
Total Distance:

<span id="total"></span>
</p>
</div>
</

body>

这就是我处理多个航点方向的方式。

var directionsService = new google.maps.DirectionsService();

var renderOptions = { draggable: true };
var directionDisplay = new google.maps.DirectionsRenderer(renderOptions);

//set the directions display service to the map
directionDisplay.setMap(map);
//set the directions display panel
//panel is usually just and empty div.  
//This is where the turn by turn directions appear.
directionDisplay.setPanel(directionsPanel); 

//build the waypoints
//free api allows a max of 9 total stops including the start and end address
//premier allows a total of 25 stops. 
var items = ["address 1", "address 2", "address 3"];
var waypoints = [];
for (var i = 0; i < items.length; i++) {
    var address = items[i];
    if (address !== "") {
        waypoints.push({
            location: address,
            stopover: true
        });
    }
}

//set the starting address and destination address
var originAddress = "starting address";
var destinationAddress = "destination address";

//build directions request
var request = {
            origin: originAddress,
            destination: destinationAddress,
            waypoints: waypoints, //an array of waypoints
            optimizeWaypoints: true, //set to true if you want google to determine the shortest route or false to use the order specified.
            travelMode: google.maps.DirectionsTravelMode.DRIVING
        };

//get the route from the directions service
directionsService.route(request, function (response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        directionDisplay.setDirections(response);
    }
    else {
        //handle error
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 地图 API - 添加多个目的地不起作用(谷歌方向) 的相关文章

  • 使用 PHP 的 JavaScript atob 操作

    我想知道是否可以使用 PHP 解密 JavaScript 加密文本 使用 JavaScript 的 btoa 函数加密 看一下base64 decode http php net manual en function base64 deco
  • 停止所有 JavaScript 执行

    是否有一个相当于 php die 函数的 javascript 可以停止所有 javascript 包括将来的 ajax 请求回调 超时等 运行 注意 我无法在调试器中使用断点 因为 bug 存在于 ie8 中 并且调试器会阻止您在断点处向
  • 无法安装组件:模板或渲染函数未定义。组件导入失败

    我正在尝试复制 vue 教程示例 在这里找到 https v3 vuejs org guide component basics html passing data to child components with props https
  • 使用终端将信息输入 Javascript

    我想获取 C 程序的输出并将其输入到 javascript 文件的标准输入中 但是我无法使用该方法将任何内容推送到标准输入中 node example js lt test txt 因为我收到以下错误 示例 js 35 stdin setR
  • 静态方法而不是原型方法Javascript

    当在类中调用实例函数时 对象的每个实例都会获得自己的函数副本 但在原型方法和静态方法中不会创建副本 它们属于类 所以如果它们都没有创建其函数的副本 那么为什么如果我们不想复制 可以简单地使用原型方法 那么我们是否有静态函数 我有点困惑 如果
  • 使用加权概率和值查找数组中的项目

    上周我正在做的一个简单程序遇到了一些问题 这里有人帮助了我 现在我遇到了另一个问题 我目前有这个代码 var findItem function desiredItem var items item rusty nail probabili
  • 使用Puppeteer拦截请求时如何获取原始编码响应大小?

    我使用此代码来记录在 Chrome 中加载页面时编码的响应大小 const puppeteer require puppeteer async function const browser await puppeteer launch co
  • Javascript 设置输入字段的值

    因为虽然我无法设置 type text 的输入字段的值 以前 我总是使用这样的东西
  • 如果 jQuery 验证失败,JSLint 有什么用?

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • AngularJS ng-重复重新渲染

    我正在使用 AngularJS 构建一个简单的应用程序 应用程序向服务器发出异步 AJAX 调用 服务器返回一个如下所示的数组 paragraphs content content one content cnt two content r
  • 如何在警报或确认框中显示粗体文本?

    如何获取粗体文本并更改警报或确认框中文本的颜色 var conFrm confirm Following List s already Sent n strong List Name strong ss replace n b Name b
  • JavaScript:发送 POST,重定向到响应

    我有一个带有 onclick 的图像 当单击事件触发时 我想发送 HTTP POST 并将 window location 重定向到 POST 的响应 我怎样才能做到这一点 只需将按钮绑定到表单元素的提交方法 重定向就会自然发生
  • Chrome 扩展 - 使用 javascript 定期运行并永久记录数据

    目前 我有一个脚本 当单击右上角托盘中的图像 仅适用于一个特定允许的网站 时 它会扫描 HTML 页面 然后输出一些值 此扫描和输出是单个 JS 文件中的函数 称为 checkData js 即使用户没有主动使用选项卡但它已打开 是否有可能
  • 使用 javascript 检测 CSP 违规

    是否可以使用 JavaScript 检测内容安全策略违规 我的 CSP 工作并发送其报告 我看到一些 url 被注入 可能是通过浏览器插件注入的 我想向用户显示一个提示 即某些插件尝试修改页面 我能否以某种方式检测与 javascript
  • Ember JS 过渡到嵌套路由,其中​​所有路由都是视图中的动态段

    我们正在使用 EmberJS 编写一个应用程序 然而 我们对这个框架仍然陌生 我们很难解决一些看似简单的问题 模型非常简单 有 3 个模型 Queue Task 和 Image 我们对所有路由使用动态 URI 段 并且这些模型的路由嵌套在以
  • javascript 中的独立括号[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 为什么使用匿名函数包装器 https stackoverflow com questions 1643321 javascript why the anonymous funct
  • JavaScript 使用多少位来表示数字?

    JavaScript 使用多少位来表示数字 一般JS实现使用64位双精度浮点数 对 32 位整数执行按位运算
  • 如何从 JavaScript 中的平面数据构建层次结构树?

    我有这样的 json 数据 Data Id 1 Name abc Parent Id 2 Name abc Parent 1 Id 3 Name abc Parent 2 Id 4 Name abc Parent 2 我想将这些数据转换为层
  • 将文本字段输入限制为仅数字

    我搜索过谷歌 但我能找到的所有解决方案都非常复杂和冗长 我需要的是将我正在进行的调查中的文本字段的输入限制为仅数字 最快 最干净的方法是什么 我使用的是严格的 HTML 4 01 和 ECMAScript 提前致谢 最快
  • 无限滚动 jQuery 和 Laravel 5 分页

    我成功从控制器返回数据 public function index posts Post with status verified gt paginate 30 return view show gt with compact posts

随机推荐

  • 如何使用我自己的 CSS 设计 Twitter 小部件的样式

    我有自己的 Twitter feed 设计 并且我想使用我自己的设计来设计默认 feed 的样式 有没有办法做到这一点 问题是您无法使用 CSS 选择器 因为它仅在加载页面后才出现 请检查这张图片 让您更多地了解我需要什么 Thanks 好
  • 使用 FileSystemWatcher 从文件中获取新行

    我正在观看一个包含以下代码的文件 FileSystemWatcher watcher new FileSystemWatcher watcher Path C watcher Filter t log watcher Changed new
  • matlab中的分箱

    我一直无法在 matlab 或 Octave 中找到函数来完成我想要的操作 我有一个两列的矩阵 m x 和 y 值 我知道我可以通过执行 m 1 或 m 2 来提取列 我想将其分成 可能 大小相等的较小矩阵 并绘制这些矩阵的平均值 换句话说
  • 替换sql server 2000中的ntext(超过4000个字符)

    如何替换sql server 2000中ntext列中超过4000个字符的文本 转换为 nvarchar max 不起作用 因为它会截断值 使用 TEXT NTEXT 是一团糟 这是尽快摆脱这些字段的众多原因之一 您需要使用 READTEX
  • 如何在Linux内核中启用CONFIG_PREEMPT选项?

    我是 Linux 内核编程的新手 尝试在 x86 64 上使用旧内核 Linux 2 6 32 我想启用其中的 CONFIG PREEMPT 选项 但找不到有关如何执行此操作的信息 我可以使用我的首选选项编译新内核 但不知道在这种情况下我需
  • 如何在没有 JoinTables 的 JPA 中创建一对多关系?

    我正在尝试使用以下表结构在 JPA 中创建 OneToMany 关系 CATALOG catalogId PK name PRODUCT productId PK name catalogId FK 我将类定义为 Entity public
  • Neo4j - 计算带有标签的节点

    我想要一个查询来计算数据集中有多少个节点具有每个标签 例如 标签A 100 标签B 200 我可以为每个单独的标签执行此操作 例如 MATCH n LabelA return count n 但是 我想在一个命令中为每个标签执行此操作 尝试
  • 普通的 console.warn() 显示在日志中,并带有服务器性“错误”

    当我记录一些东西时console warn 它似乎出现在 Stackdriver 日志中 严重性为 错误 Stackdriver 错误报告不显示这些错误 因此它们似乎不被视为错误 这使得无法过滤日志以仅显示错误 读取 Stackdriver
  • iFrame 中的 Angular2 不安全资源 URL 与 DomSanitationService

    背景 我正在为我们正在研究的过渡策略进行概念验证 该策略将在我们致力于将现有功能转换为 Angular 的同时将 旧 Web 应用程序引入 iFrame Issue 我遇到的问题是尝试在 iFrame 上设置 src 标记 我正在尝试使用
  • REST 何时/如何取代 SOAP [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前正在写关于 IT 技术等的论文
  • 如何在php中检查来自其他网站的cookie并不允许访问我的网站?

    如何在php中检查来自其他网站的cookie并不允许访问我的网站 如果客户端有 cookie 示例 如果有来自 www example com 的 cookie 它会被重定向到其他网站吗 请帮助我其他网站上的一些人对我的不良网站发表评论 我
  • Android - 将 ProgressBar 设置为垂直条而不是水平条?

    我正在尝试使用 ProgressBar 作为类似计量的显示 我认为这将是一个简单的任务 并认为 ProgressBar 有一个属性可以设置为垂直 但我没有看到任何东西 此外 我希望能够在栏的侧面显示类似标尺的指示器 以清楚地指示当前级别 感
  • 在 Linux 中生成相同的数字,但在 Windows 中则不然

    下面的代码旨在生成区间 1 100 中的五个伪随机数的列表 我播种default random engine with time 0 它返回系统时间UNIX时间 https en wikipedia org wiki Unix time 当
  • 与 Post 进行交叉呼叫,但在飞行前失败

    我必须从我的网站向第三方域 服务器进行网络服务调用 当我使用 jQuery Ajax by Post 方法和 content type text plain 进行此调用时 它工作正常 但是 当我将其更改为 content type text
  • 如何隐藏 WPF ListView 的标头?

    我希望能够隐藏 WPF ListView 中每个网格列顶部的标题 这是我的 ListView 的 XAML
  • 在同一 URL 上运行 SOAP 和 RESTful

    假设我们有一个响应主机标头 kebab shop intra net 的网站 此 URL 中是否可以同时包含 SOAP 和 RESTful 也就是说 这两者都是在已部署的代码中处理的 kebab shop intra net takeawa
  • 在我的绘画程序中绘制矩形时出现错误

    public partial class Form1 Form Point downPoint upPoint List
  • iPhone HTML5 音频标签不起作用

    我遇到了音频标签无法在 iPonhe 上工作的问题 在 W3Schools 网站上测试时它可以播放 HTML5 音频标签 但不适用于我下面的网站
  • 使用 awk 添加列。这个 awk 命令有什么问题?

    我想将两列添加到大约 10 000 列的文件中 我想在每行插入 nr 22 作为第一列 然后我想要将原始第一列作为第二列 然后作为第三列我想要插入第 nr NR 行 之后我想要打印其余的原始列 我想我可以用下面的 awk 行来做到这一点 a
  • Google 地图 API - 添加多个目的地不起作用(谷歌方向)

    我在创建 复制谷歌地图方向功能时遇到问题 当我有 从 到 字段时 我可以让它正常工作 但一旦我尝试添加多个目的地 它就不起作用 我看过我们 但我没有得到任何很好的示例教程来展示这是如何完成的 以下是我到目前为止所做的事情 但我很确定这件事做