我在Stack上查找了此问题的其他示例,但它们要么使用JQUERY要么使用XML进行加载,但这不是我用来填充Map的内容。
地图工作得很好,但是当我尝试将PHP变量引用为LatLng时,标记不起作用。我试图回显LatLng变量并使用Heredocs,但没有任何效果。
<? php
// I MADE QUERIES HERE AND ADDED THEM INTO "$coords"
echo<<<_
<!DOCTYPE html>
<html>
</style>
<body>
<div class="Banner">
<div class="TitleText">Sonic Strains ©</div>
</div>
<div class="login">Logout</div>
<div class="gallery" id="container">
<div class="map" id="mapInsert"></div>
<div class="navButton">Start Nav</div><div class="orderButton">Order Details</div>
<div class="abortButton">Abort</div><div class="confirmButton">Confirm</div><div class="disclaimer"></div>
</div>
<script>
function initMap() {
navigator.geolocation.getCurrentPosition(function(position) {
var initialLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
var Map = new google.maps.Map(document.getElementById('mapInsert'));
Map.setCenter(initialLocation);
Map.setZoom(8);
}, function(positionError) {
//---------- User denied geolocation prompt - default to Chicago
Map.setCenter(new google.maps.LatLng(39.8097343, -98.5556199));
Map.setZoom(5);
},{enableHighAccuracy:true, timeout: 3000, maximumAge:1000});}
//MAKE ANOTHER MARKER FOR THE CLIENT LOCATION
var userLocation = {lat:$coords[user_lat], lng:$coords[user_long]};
var marker = new google.maps.Marker({
position:userLocation,
map:Map,
draggable:false,
clickable:false
});
marker.setMap(Map);}
</script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=[API_KEY]&callback=initMap"
async defer></script>
</body>
</html>
_;
?>
错误-
“ SyntaxError:意外令牌<”
这是我尝试引用PHP LatLng标记位置的地方,为什么不允许我引用PHP?
答案 0 :(得分:0)
问题出在开头标签上。您使用的标签无效:
<? php
(请注意问题和PHP关键字之间的空白)。
您需要将其更改为正确的打开PHP标记,例如:
<?php
此外,在代码上,您需要回显var,因为您对此没有做任何事情。
var userLocation = {lat:<?php echo $coords[user_lat]; ?>, lng: <?php echo $coords[user_long]; ?>};
(((EDIT))
好的,对代码进行新的修订,我可以看到至少一个问题:
您正在使用以下语法创建POI:
var userLocation = {lat:$coords[user_lat], lng:$coords[user_long]};
var marker = new google.maps.Marker({
position:userLocation,
map:Map,
draggable:false,
clickable:false
});
检查我自己的代码,有一个功能poi添加代码:
newmarker = new google.maps.Marker({
map: map,
key: marker[0],
name: marker[1],
lat: marker[3],
lon: marker[4],
content: marker[9],
position: new google.maps.LatLng(marker[3], marker[4]),
icon: icon
});
很多代码(键,名称等)可能是可选值,但是,您要向位置值添加一个数组,而不是LatLng值。
如果该代码不起作用,请直接检查您的HTML代码(而不是在PHP上),因为在阻止加载过程的代码上您可能会感到有些奇怪(例如,php无法正确填充值)。 / p>
答案 1 :(得分:0)
问题是标记声明在initMap()之外。当我将标记移到“主要功能”内部