【发布时间】:2016-01-26 06:26:05
【问题描述】:
当用户注册我的应用程序(大学项目)时,系统会要求他们提供地址。我将此地址转换为纬度和经度,然后将其存储在我的数据库中。
我像这样访问纬度和经度:
<?php
require '../connect.php';
session_start();
$_SESSION['username'];
$sql = "SELECT latitude, longitude FROM userinformation WHERE username = '". $_SESSION['username']. "'";
$result = $db->query($sql);
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
$lat = $row["latitude"];
$lng = $row["longitude"];
echo $lat;
echo $lng;
}
}
?>
然后我尝试将 $lat 和 $lng 变量传递给 Maps API 脚本,如下所示:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: {lat: '<?php echo $lat;?>', lng: '<?php echo $lng;?>'}
});
marker = new google.maps.Marker({
map: map,
draggable: true,
animation: google.maps.Animation.DROP,
position: {lat: '<?php echo $lat;?>', lng: '<?php echo $lng;?>'}
});
marker.addListener('click', toggleBounce);
}
这给了我以下页面:
我也尝试将 PHP 变量转换为 JS:
var js_variable = '<?php echo $lat;?>';
document.write(js_variable);
var js_variable1 = '<?php echo $lng;?>';
document.write(js_variable1);
然后我传入 JS 变量而不是 PHP 变量,但输出仍然相同。将变量作为 lat/lng 而不是硬编码值传递的正确方法是什么:
center: {lat: 59.325, lng: 18.070}
position: {lat: 59.327, lng: 18.067}
【问题讨论】:
-
PHP 在浏览器中解析为什么?如果它看起来与您在上面指定的“硬编码值”完全相同,it should just work(您可能不想使用文档写入来创建变量的“javascript”版本)
-
@geocodezip 在浏览器中,当我使用包含 lat/lng 的变量时,我只会得到一个空白的地图画布,但是如果我对这些值进行硬编码,那么我会得到一张地图。
-
如果您在浏览器中查看源代码,这两个版本(工作/硬编码与来自 PHP 的不工作值)看起来是否相同? (我假设不是)。你能告诉我们有什么区别吗?
-
@geocodezip 当我运行硬编码值时,我得到: position: {lat: 30.365273, lng: -81.699600} 与 PHP 转义一样,我得到: position: {lat: '30.365273', lng :'-81.699600'}。所以''导致了问题,但他们需要逃避 PHP?
标签: javascript php google-maps