首先,我开始编码已经差不多一周了,所以即使有一些基本知识,我仍然缺少很多东西。我正在制作PWA,需要有人登录帐户时回显地图。帐户正在运行,从数据库获取信息正在运行,从而解决了我们遇到的问题。首先,我猜测echo内的脚本正在尝试从js文件中获取某些信息,但由于代码的编写方式而未能实现。在此处的此php代码中,所有内容都适用于其他地图示例,但我想根据自己的需要使用另一个更合适的地图。最后,当我运行站点时,即使整个过程都加载了,地图也不会显示。我目前正在猜测我使用“”或“”或导入命令的方式存在问题。我已经尝试了2天,现在更改代码中的内容,但似乎没有任何效果。希望我能为您提供所需的信息,并期待您的建议。
我尝试在脚本中使用“代替'。不起作用,因为它被识别为php代码。尝试在导入的” from“部分使用附加的',不使用bueno。尝试使用heredoc,但没有无法正常工作,原因是我收到“语法错误,页面结尾未预期”或某种某种形式,这可能意味着我做错了方法。将“”更改为insite归因和网址链接,原因是它被标记为//消息,否则被识别为“ php代码”。 这是我要使用的地图https://openlayers.org/en/latest/examples/xyz-esri.html
的链接<?php
$sql = "SELECT * FROM users WHERE uidUsers = '" . $_SESSION['userUid'] . "'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result) ){
$lon = $row['lon'];
$lat = $row['lat'];
$lonlat = $lon.", ".$lat;
echo "<script type='text/javascript'>
import Map from 'jsc/ol/Map.js';
import View from 'jsc/ol/View.js';
import TileLayer from 'jsc/ol/layer/Tile.js';
import {fromLonLat} from 'jsc/ol/proj.js';
import XYZ from 'jsc/ol/source/XYZ.js';
var map = new Map({
target: 'map',
layers: [
new TileLayer({
source: new XYZ({
attributions: 'Tiles © <a href=\"https://services.arcgisonline.com/ArcGIS/' +
'rest/services/World_Topo_Map/MapServer\">ArcGIS</a>',
url: 'https://server.arcgisonline.com/ArcGIS/rest/services/' +
'World_Topo_Map/MapServer/tile/{z}/{y}/{x}'
})
})
],
view: new View({
center: fromLonLat([$lonlat]),
zoom: 15
})
});
</script>";
}
}
?>
答案 0 :(得分:0)
尝试以下代码。与您的代码相同,除了,我在javascript开始之前关闭了PHP代码,在javascript结束之后重新打开了代码。在两次传递变量lonlat
之间,我使用了符号<?= $lonlat ?>
。
注意:这是未经测试的代码。
<?php
$sql = "SELECT * FROM users WHERE uidUsers = '" . $_SESSION['userUid'] . "'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result) ){
$lon = $row['lon'];
$lat = $row['lat'];
$lonlat = $lon.", ".$lat;
?>
<script type='text/javascript'>
import Map from 'jsc/ol/Map.js';
import View from 'jsc/ol/View.js';
import TileLayer from 'jsc/ol/layer/Tile.js';
import {fromLonLat} from 'jsc/ol/proj.js';
import XYZ from 'jsc/ol/source/XYZ.js';
var map = new Map({
target: 'map',
layers: [
new TileLayer({
source: new XYZ({
attributions: 'Tiles © <a href='https://services.arcgisonline.com/ArcGIS/' +
'rest/services/World_Topo_Map/MapServer'>ArcGIS</a>',
url: 'https://server.arcgisonline.com/ArcGIS/rest/services/' +
'World_Topo_Map/MapServer/tile/{z}/{y}/{x}'
})
})
],
view: new View({
center: fromLonLat([<?= $lonlat ?>]),
zoom: 15
})
});
</script>
<?php
} // while loop ends
} // closing if condition
?>
答案 1 :(得分:0)
设法使它起作用。使用了esri的ARCGIS地图以及geojson图层,以添加自定义要素。谢谢大家的尝试。