gpt4 book ai didi

javascript - 如何使用带有 greasemonkey 的 google maps api 读取地址表并跟踪路线?

转载 作者:数据小太阳 更新时间:2023-10-29 05:30:43 29 4
gpt4 key购买 nike

有一个网站在表格中保存了我所在城市(Porto Alegre - 巴西)的巴士路线。

例如:EPTC

使用 Greasemonkey加载 de Google Maps API , id 喜欢在屏幕右上角显示一个固定的 map 。

脚本必须从表中读取街道名称,去除多余的空格(有很多),并以正确的顺序绘制路线。

script pronto

最佳答案

这是完成任务的 Greasemonkey 兼容脚本:http://userscripts.org/scripts/show/116339

要点:

1-找到表格并循环遍历每个单元格以获取内容
2- 去除所有多余的空格并将文本保存在数组中
3-创建两个DIV,一个在另一个里面(否则位置将不固定)
4- 将 DIV 附加到页面并调用 API
5- 必须使用 unsafeWindow (google = unsafeWindow.google) 调用“google”

API_js_callback = "http://maps.google.com/maps/api/js?sensor=false&region=BR&callback=initialize";

var script = document.createElement('script');
script.src = API_js_callback;
var head = document.getElementsByTagName("head")[0];
(head || document.body).appendChild(script);

if (document.getElementsByTagName('TABLE')[0] != null) {
var Tabela_1 = document.getElementsByTagName('TABLE')[0];
var Tabela_1_cel = Tabela_1.getElementsByTagName('TD');
var Tabela_1_lin = Tabela_1.getElementsByTagName('TR');
}

if (document.getElementsByTagName('TABLE')[1] != null) {
var Tabela_2 = document.getElementsByTagName('TABLE')[1];
var Tabela_2_cel = Tabela_2.getElementsByTagName('TD');
var Tabela_2_lin = Tabela_2.getElementsByTagName('TR');
}

var DIVmapa = document.createElement('div');
DIVmapa.id = 'DIVmapa';
DIVmapa.style.border = '2px coral solid';
DIVmapa.style.cursor = 'pointer';
DIVmapa.style.display = '';
DIVmapa.style.height = '75%';
DIVmapa.style.margin = '1';
DIVmapa.style.position = 'fixed';
DIVmapa.style.padding = '1';
DIVmapa.style.right = '1%';
DIVmapa.style.top = '1%';
DIVmapa.style.width = '30%';
DIVmapa.style.zIndex = '99';

var DIVinterna = document.createElement('div');
DIVinterna.id = 'DIVinterna';
DIVinterna.style.height = '100%';
DIVinterna.style.width = '100%';
DIVinterna.style.zIndex = '999';

if (Tabela_1 || Tabela_2) {
document.body.appendChild(DIVmapa);
DIVmapa.appendChild(DIVinterna);
}

initialize = setTimeout(function () {
google = unsafeWindow.google;
directionsService = new google.maps.DirectionsService();
directionsDisplay = new google.maps.DirectionsRenderer();

var PortoAlegre = new google.maps.LatLng(-30.034176,-51.229212);
var myOptions = {
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: PortoAlegre
}

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

function calcRoute() {
var start = Tabela_1_cel[1].getElementsByTagName('B')[0].innerHTML.replace(/\s{2,}/g, ' ') + ' Porto Alegre';
var end = Tabela_1_cel[10].getElementsByTagName('B')[0].innerHTML.replace(/\s{2,}/g, ' ') + ' Porto Alegre';
var waypts = [];
//for (var i=1; i<Tabela_1_cel.length; i++) {
for (var i=2; i<10; i++) {
ponto_1 = Tabela_1_cel[i].getElementsByTagName('B')[0].innerHTML;
semespacos_1 = ponto_1.replace(/\s{2,}/g, ' ') + ' Porto Alegre';
waypts.push({location: semespacos_1, stopover: true});
}

var request = {
origin: start,
destination: end,
waypoints: waypts,
optimizeWaypoints: false,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};

directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {directionsDisplay.setDirections(response)};
//alert(status);
});
}

calcRoute();
}, 1000);

尽情享受吧! :)

关于javascript - 如何使用带有 greasemonkey 的 google maps api 读取地址表并跟踪路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7894996/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com