我将谷歌地图嵌入到一个页面中,其中包含一个包含多个城市的下拉列表。我已将这些城市的lat和lang值存储在数据库中。用户将选择一个城市,并且在单击提交按钮时,地图将加载相应的lat和lang值。请注意,我不想要地理编码技术。这是我努力的一小部分。
var map;
var cntr;
var zm;
<?php
if(!empty($position['lat']) && !empty($position['lang'])){ ?>
var latValue = <?php $position['lat']; ?> ;
var langValue = <?php $position['lang']; ?> ;
cntr = {lat: latValue , lng: langValue };
zm = 8;
<?php} else{ ?>
cntr = {lat: 30, lng: 70};
zm = 7;
<?php } ?>
function initialize() {
var mapOptions = {
center: cntr,
zoom: zm
};
//And the rest of the code for markers and infowindows etc.
&#13;
这不起作用。它甚至会停止其余的代码工作,当我删除此部分并将默认值分配给var cntr时,这完全有效。 (我正在使用MVC组织,$ position是控制器中lat和lang城市的关联arrray。查询工作正常。)
答案 0 :(得分:1)
默认情况下,您无法在.js文件中使用php。您必须相应地更改.htaccess。 这是一个快速谷歌搜索网站,如何做到这一点。 https://css-tricks.com/snippets/htaccess/use-php-inside-javascript/
答案 1 :(得分:0)
cntr = {lat: latValue , lang: langValue };
应该说lng
而不是lang
。
我不确定如何在控制台中报告;它可能会在API代码中引发错误。
答案 2 :(得分:0)
if(!empty($position['lat'] && !empty($position['lang'])))
不应该是:
if(!empty($position['lat']) && !empty($position['lang']))
答案 3 :(得分:-1)
您提供的代码中有两个错误。首先,你必须说
<?php echo $position['lat']; ?>
不
<?php $position['lat']; ?>
其次,不是在php循环中取lat
和lng
的默认值,而是在声明它们时初始化变量。所以你需要的代码看起来像:
var map;
var cntr = {lat: 30, lng: 70};
var zm = 7;
<?php if(!empty($position['lat']) && !empty($position['lang'])){ ?>
var latValue = <?php echo $position['lat']; ?> ;
var langValue = <?php echo $position['lang']; ?> ;
cntr = {lat: latValue, lng: langValue};
zm = 8;
<?php } ?>
function initialize() {
var mapOptions = {
center: cntr,
zoom: zm
};
//rest of the code
&#13;
希望这会对你有所帮助。