mcl*_*dm3 8 php mysql ajax json google-maps
我正在开展一个项目,我无法继续前进,需要一些认真的帮助.我来给你一些背景知识.
我正在开发一项服务,让用户从多个起点骑自行车到同一目的地协调他们的游乐设施.我们设计的部分工作流程让用户使用Google地图服务构建地图; 他们进入起始目的地,谷歌创建一个它认为可行的路线,然后用户可以通过拖动点来定制该路线以满足他们的特定需求.我们开发了这个界面并且在以下方面运行良好:
http://ridestreaming.com/google_maps/
在我无法通行的墙上,如何将用户编辑的路线从Google地图中删除并保存在数据库中以供将来参考.看起来我们有一个方法可以在我们的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);
Run Code Online (Sandbox Code Playgroud)
我们可以将路径数据作为JSON文件获取,将其串行化,然后通过AJAX将其发送到PHP文件,我们打算将其处理并存储在MySQL中.但是,从Google地图返回的JSON似乎格式不正确; 当PHP尝试解码它时,它吓坏了,我通过在线验证器运行它,证实了它的畸形.正是在这一点上,我们完全感到困惑,不知道如何前进.
这个人有没有机会帮忙解决这个问题?我正把头靠在墙上.任何回应都非常感谢.谢谢你的时间!
我一直在做类似的事情,发现这真的很困难,但是经过几个小时的努力,我设法从用户拖动的路线中获取所有航点并将其保存到数据库中。
所以,我有一个字段保存所有用“;”分隔的航路点。
你必须有这个:
directionsDisplay = new google.maps.DirectionsRenderer({
'map': map,
'preserveViewport': true,
'draggable': true
});
Run Code Online (Sandbox Code Playgroud)
在你的初始化函数中
这是我的 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);
}
Run Code Online (Sandbox Code Playgroud)
我很快就把它从我的 JS 中拉下来,所以如果它没有意义,我会发布我所有的 JS 并一点一点地解释它。
谢谢