使用 json_encode 将数据从 php 传输到 javascript

我正在构建一个 Google 地图页面,该页面使用经纬度数据坐标来创建热图以显示某个地区狐狸的繁殖情况。


就目前而言,当 lat long 值get_points像这样硬编码到我的 index.php 上的JavaScript 函数中时,我的应用程序运行良好。


index.php(注意:此代码经测试有效,但需要谷歌地图 api 密钥才能加载地图和热图点)


<?php require_once("resources/config.php"); ?>


<!DOCTYPE html>

<html>

 <head>

   <title>Heatmaps</title>

   <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 

   <meta charset="utf-8">

   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">

   <link rel="stylesheet" href="css/style.css">

   <style>

     /* NOTE - GOOGLE MAPS NEED HTTPS (SECURE ORIGIN) OR IT WILL NOT SHOW A MAP. IT WILL CATEGORICALLY NOT WORK ON HTTP*/

     #map {

       /*height: 425px;*/

       height: 100%; 

     }

     /* Optional: Makes the sample page fill the window. */

     html, body {

       height: 100%;

       margin: 0;

       padding: 0;

     }

     #floating-panel {

       position: absolute;

       bottom: 10px;

       /*left: 25%;*/

       z-index: 5;

       background-color: #fff;

       padding: 5px;

       border: 1px solid #999;

       text-align: center;

       font-family: 'Roboto','sans-serif';

       line-height: 30px;

       padding-left: 10px;

     }

     #floating-panel {

       background-color: #fff;

       border: 1px solid #999;

       /*left: 25%;*/

       left: 6%;

       padding: 5px;

       position: absolute;

       /*top: 10px;*/

       z-index: 5;

     }

问题是,我不想在我的get_points()函数中硬编码经纬度坐标。


我很麻烦MySQL使用我设计的使用 json_encode 的 php 函数将这些经纬度点从我的表提供到上述函数。


我收到的错误主要是“不是有效的 MVC 数组”。但奇怪的是,我可以打印出数组。


我的表架构


回首忆惘然
浏览 128回答 1
1回答

墨色风雨

JSON 是一种数据交换格式,而不是一种编程语言。当您在字符串中包含诸如“new google.maps.LatLng...”之类的内容时,就是这样:一个字符串。它没有任何意义——即使有,您的 PHP 代码也不会返回任何内容,您的 JavaScript 代码也不会执行任何内容。不过,您走在正确的轨道上,所以让我们做一些小改动。在你的 PHP 中,你可以这样做:<?phpfunction get_coordinates() {&nbsp; &nbsp; $hotpointquery = query("SELECT `locationLatitude`, `locationLongitude` FROM `location_values` ");&nbsp; &nbsp; confirm($hotpointquery);&nbsp; &nbsp; while ($row = fetch_array($hotpointquery)) {&nbsp; &nbsp; &nbsp; &nbsp; $coordinates = [$row['locationLatitude'], $row['locationLongitude']];&nbsp; &nbsp; }&nbsp; &nbsp; return json_encode($coordinates);}在页面的后面,在<script>元素中,您可以让 PHP 打印出该数组,然后 JS 可以使用map函数将其操作为您要查找的对象:function getPoints() {&nbsp; &nbsp;var coords = <?= get_coordinates() ?>&nbsp; &nbsp;var points = coords.map(function(coord) {&nbsp; &nbsp; &nbsp; &nbsp;return new google.maps.LatLng(coord[0], coord[1]);&nbsp; &nbsp; });&nbsp; &nbsp; return points;}
打开App,查看更多内容
随时随地看视频慕课网APP