如何将Google Maps V3距离结果保存到MySQL数据库?

时间:2010-11-16 04:40:39

标签: javascript mysql database google-maps

(并提前抱歉这是一个基本问题)

我有一个带有位置信息的MySQL数据库,以及一个可以将新的,用户提交的位置放入数据库的PHP脚本。我想(然后)立即(立即)使用Google地图路线请求找到新提交的位置与数据库中现有位置的子集之间的距离,并在数据库中存储这些距离。

我可以通过PHP选择位置子集并使用JavaScript通过Google Maps获取距离数据,但是如何将这些JavaScript变量传输到我的数据库? - 将一组JavaScript变量保存为MySQL数据库中的单独条目的最佳方法是什么?

感谢您的帮助!

卡尔

2 个答案:

答案 0 :(得分:2)

如果已经将距离正确加载到JS代码中的变量中,那么您可以创建一个XmlHttpRequest将它们发送到您的服务器,PHP脚本将把它们放入数据库中。伪代码将是这样的:

JS:

function storeDistance(pointId1, pointId2, distance) {
  var xhr = new XmlHttpRequest();
  xhr.open("POST", "/savedistance.php", true);
  xhr.send("pid1=" + pointId1 + "&pid2=" + pointId2 + "&distance=" + distance);
}

PHP:

$pointId1 = $_POST['pid1'];
$pointId2 = $_POST['pid2'];
$distance = $_POST['distance'];
mysql_query("insert into distances values ($pointId1, $pointId2, $distance)");

答案 1 :(得分:1)

我有一个项目,我遇到了同样的问题。如果它在两点A和B之间,你可以参考   http://vikku.info/programming/google-maps-v3/draggable-directions/saving-draggable-directions-saving-waypoints-google-directions-google-maps-v3.htm

如果分数

editroutes = JSON.parse(editroutes);
origin = editroutes.ag.origin;
destination = editroutes.ag.destination;
var ag = editroutes.ag.waypoints;

for(i=0;i<ag.length;i++){
    if(typeof ag[i].location == 'object'){
        waypoints.push({location:new google.maps.LatLng(ag[i].location.Ia, ag[i].location.Ja),stopover:ag[i].stopover});
    }else if(typeof ag[i].location == 'string'){
        waypoints.push({location:ag[i].location,stopover:ag[i].stopover});
    }
}

avoidHighways =  editroutes.ag.avoidHighways;
avoidTolls = editroutes.ag.avoidTolls;
var request = {
       origin: origin,
       destination: destination,
       waypoints: waypoints,
       travelMode: google.maps.DirectionsTravelMode.DRIVING,
       optimizeWaypoints: false,
       avoidHighways: avoidHighways,
       avoidTolls: avoidTolls
};
directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) { 
        directionsDisplay.setDirections(response);
    }
});