无法从PHP MySQL查询返回纬度/经度结果到Javascript JSON

Unable to return latitude/longitude result to Javascript JSON from PHP MySQL query

本文关键字:经度 结果 JSON Javascript 纬度 返回 PHP MySQL 查询      更新时间:2023-09-26

我试图从PHP/MySQL查询到我的Javascript函数返回纬度和经度的数据库值,以便填充谷歌地图JSON请求。

我的PHP/MySQL查询脚本,phpsearch2.php是:
<?php
include "base.php";
$name = $_GET["name"];
$query = "SELECT lat, lng FROM markers WHERE name = '".$name."'";
$result = mysql_query($query);
while($row = mysql_fetch_array ($result))     
{
     echo '{';
           echo '"latitude":"'.$row['lat'].'",';
           echo '"longitude":"'.$row['lng'].'",';
     echo '}';    
}
?>

返回如下格式的值:

{"latitude":"37.730267","longitude":"-122.498589",} 

这是我的计算根函数,当我运行程序时,我得到一个错误说'原点未定义'即使我认为我将其设置为具有与JSON请求返回结果相同的值到phpsearch,我只是不知道错误在哪里。

 function calcRoute() {
    var startname = document.getElementById('start').value;
    var endname = document.getElementById('end').value;
    var waypts = [];
    var checkboxArray = document.getElementById('waypoints');
    for (var i = 0; i < checkboxArray.length; i++) {
      if (checkboxArray.options[i].selected == true) {
        waypts.push({
            location:checkboxArray[i].value,
            stopover:true});
      }
    }
$.getJSON("phpsearch2.php", {name : startname}, function (result) {
origin = google.maps.LatLng('result');
});
var end = new google.maps.LatLng('37.738029', '-122.499481');
     var request = {
        origin: origin,
        destination: end,
        waypoints: waypts,
        optimizeWaypoints: true,
        travelMode: google.maps.DirectionsTravelMode.WALKING
    };
        directionsService.route(request, function(response, status) {
    //document.write('<b>'+ start + end + '</b>');
      if (status == google.maps.DirectionsStatus.OK) {
        directionsDisplay.setDirections(response);
        var route = response.routes[0];
        var summaryPanel = document.getElementById('directions_panel');
        summaryPanel.innerHTML = '';
        // For each route, display summary information.
        for (var i = 0; i < route.legs.length; i++) {
          var routeSegment = i + 1;
          summaryPanel.innerHTML += '<b>Time for a Walkabout </b><br>';
          summaryPanel.innerHTML += '<b>From ' + startname + '   </b>';
          summaryPanel.innerHTML += '<b>to ' + endname + '('+ route.legs[i].distance.text +')</b><br>';
      } 
      }
    });
 }

您正在将'result'作为字符串传入。您需要传递结果对象,不带引号:

var origin = google.maps.LatLng(result);

请记住$。getJSON是异步的。您可能需要将gmaps代码的其余部分包装在函数声明中,并在$。在 origin之后设置getJSON callback 。否则,您仍然试图在从服务器获取它之前使用origin。

类似:

$.getJSON("phpsearch2.php", {name : startname}, function (result) {
    var origin = google.maps.LatLng(result);
    // Now that we have our origin, we can initialize the rest
    init(origin);
});
function init(origin) {
   var end = new google.maps.LatLng('37.738029', '-122.499481');
   var request = {
        origin: origin,
   <snip>
}