如何解决InvalidValueError:在索引0:不是LatLng或LatLngLiteral:不是对象?

时间:2018-10-17 02:24:36

标签: javascript php ajax

我正在尝试在Google地图中画一条折线, 但我首先要在数据库中检索数据。 然后到我的php文件和我的脚本文件。 以下是我如何在我的DBPHPfile中生成json数据的方法..对不起,如果有点混乱

while($row = pg_fetch_assoc($result)){
    $cleaned = clean($row['longlat']);
    $count =true;
    $temp = 0;
    $temp2 = 0;

    for($x = 0; $x <= strlen($cleaned)-1; $x++){
      if($cleaned[$x] == ' '){
        $temp2 = $x - $temp;
        if($count == true){
          array_push($long, remove_spaces(substr($cleaned, $temp, $temp2)));
          $count = false;
        }
        else{
          $count = true;
          array_push($lat, remove_spaces(substr($cleaned, $temp, $temp2)));
        }
        $temp = $x;

      }
    }
    $temp2 = strlen($cleaned) - $temp;
    array_push($lat, substr($cleaned, $temp, $temp2+1));
  }


  $finalroutes = array();

  // finalizing my routes

  for($x = 0; $x<sizeof($long);$x++){
    $long[$x]=remove_spaces($long[$x]);
    settype($long[$x], "float");
    $lat[$x]=remove_spaces($lat[$x]);
    settype($lat[$x], "float");
    array_push($finalroutes, "{lat: $lat[$x], lng: $long[$x]}");
  }
   echo json_encode($finalroutes);

那我的剧本就是这个

$(function(){
      $('#go').click(function(){
        var longtemp = $('#long').val();
        var lattemp = $('#lat').val();

        $.ajax({
          url:"dbphp.php",
          method:"POST",
          data:{longtemp:longtemp, lattemp:lattemp},
          success:function(data){
              map = new google.maps.Map(document.getElementById('map'), {zoom: 18, center: {lat: 8.264670, lng: 124.263394}, mapTypeId: 'terrain'});
              flightPlanCoordinates = JSON.parse(data); //from here
              // var newflights=[];
              // for(var i = 0; i <flightPlanCoordinates.type.length();i++)
              //   newflights[i]=flightPlanCoordinates[i];
              console.log(data);


              flightPath = new google.maps.Polyline({
                path: flightPlanCoordinates,
                geodesic: true,
                strokeColor: '#FF0000',
                strokeOpacity: 1.0,
                strokeWeight: 2
              });//to here
              flightPath.setMap(map);
          }
        })
      })
    })

我标记了问题所在,以便您轻松找到它。

1 个答案:

答案 0 :(得分:0)

替换此:

array_push($finalroutes, "{lat: $lat[$x], lng: $long[$x]}");

使用

$finalroutes[] = ["lat" => $lat[$x], "lng" => $long[$x]];

这样,您将拥有正确的数组,以后您将在echo json_encode($finalroutes);中将其编码为json