gpt4 book ai didi

php - 从谷歌地图中获取拖动的路线数据

转载 作者:可可西里 更新时间:2023-11-01 06:33:49 24 4
gpt4 key购买 nike

我正在做一个项目,现在我无法再继续下去了,需要一些认真的帮助。让我给你一些背景知识。

我正在开发一项服务,让用户骑自行车去来自多个起点的同一目的地协调他们的游乐设施。 我们设计的部分工作流程让用户使用谷歌地图服务;他们输入起始目的地,谷歌创建它认为可行的路线,然后用户可以通过以下方式定制该路线拖动点以满足他们的特定需求。我们有这个接口(interface)开发并在以下位置很好地工作:

http://ridestreaming.com/google_maps/

我遇到了无法逾越的障碍是如何让用户编辑离开谷歌地图并保存在数据库中以备将来使用引用。似乎我们有一种方法可以在我们的Javascript,在此文件中(第 344-352 行):

http://ridestreaming.com/google_maps/workflow.js

    var newString = JSON.stringify(directions);
//set up area to place drop directionsResponse object string
var directions_response_panel = document.getElementById("directions_response");
//dump any contents in directions_response_panel
directions_response_panel.innerHTML = "";
//add JSON string to it
directions_response_panel.innerHTML = "<pre>" + newString + "</pre>";
//run the ajax
runAjax(directions);

我们可以将路由数据作为 JSON 文件取出,将其字符串化,然后发送它通过 AJAX 到我们打算处理它并存储它的 PHP 文件在 MySQL 中。但是,从 Google map 返回的 JSON 出现畸形; PHP 在尝试对其进行解码时吓坏了,我跑了它通过在线验证器确认其畸形。这是在这一点上,我们完全感到困惑,不知道如何前进。

是否有人可以协助解决此问题?我正要用头撞墙。非常感谢任何回应。感谢您的宝贵时间!

最佳答案

我一直在做类似的事情,发现这真的很困难,但是经过几个小时的努力,我设法从用户​​拖动的 route 获取所有航路点并将其保存到数据库中..

所以,我有一个字段,其中包含用“;”分隔的所有航路点。

你必须有这个:

directionsDisplay = new google.maps.DirectionsRenderer({
'map': map,
'preserveViewport': true,
'draggable': true
});

在你的初始化函数中

这是我的 JS 的一部分:

var currentDirections;
var directionsDisplay;
var waypoints = [];
function saveWaypoints()
{
waypoints = [];
var waypts_field = document.getElementById('waypoints').value.split(';');
for(var bo = 0; bo < waypts_field.length; bo++)
{
if(waypts_field[bo] == ' ' || waypts_field[bo] == '')
{
waypts_field.splice(bo,1);
bo -= 1;
continue;
}

waypoints.push({ location: waypts_field[bo], stopover: false });
}
}


function getWaypoints()
{
currentDirections = directionsDisplay.getDirections();
var route = currentDirections.routes[0];
totalLegs = route.legs.length;
for (var i = 0; i < route.legs.length; i++) {
var routeSegment = i+1;
if(route.legs[i].via_waypoint[0] === undefined) continue;

document.getElementById('waypoints').value = '';
var via_waypoint_count = route.legs[i].via_waypoint.length;
queue = 0;
for(var bi = 0; bi < via_waypoint_count; bi++)
{
var count = 0;

var lat;
var lng;

for (key in route.legs[i].via_waypoint[bi]['location'])
{
if(count > 1) break;
if(count == 0)
{
lat = route.legs[i].via_waypoint[bi]['location'][key];
count++;
continue;
}
lng = route.legs[i].via_waypoint[bi]['location'][key];

count++;
}
reverseGeoCode(new google.maps.LatLng(lat,lng));
}
}
}

function reverseGeoCode(latlng)
{
queue += 60;
setTimeout(function(){
geocoder.geocode({ 'latLng': latlng }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
document.getElementById('waypoints').value += results[1].formatted_address + '; ';
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}, queue * 10);
}

我很快就把它从我的 JS 中删除了,所以如果它没有意义,我会发布我所有的 JS 并一点一点地解释它..

谢谢

关于php - 从谷歌地图中获取拖动的路线数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160126/

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