我有一些问题,我想要的是在谷歌地图上用数据库中的给定坐标绘制多边形,只是为了测试,我只绘制了两个坐标不同的多边形。这是我的代码
<script>
var map;
function initialize()
{
var va = new Array();
for(var i=0;i<2;i++)
{
va[i] = new Array();
}
var x=new google.maps.LatLng(-7.175993,112.650729);
var count=new Array();
var allcoor=new Array();
var mySplitResult;
//----------Problem May Be Start Right There----------------------------------
<?php
$indeksline=0;
?>
for(var a=0;a<2;a++)
{
//To get number of coordinate
count[a] = "<?php include_once("koneksi.php");
$sql3="SELECT a.Informasi from asset a LIMIT $indeksline , 1";
$result3 = mysql_query($sql3);
$data3 = mysql_fetch_row($result3);
$pieces = explode("|", $data3[0]);
$numberOfWords = count(explode("|", $data3[0]));
echo $numberOfWords;?>";
//To get Coordinate
allcoor[a] = "<?php include_once("koneksi.php");
$sql3="SELECT a.Informasi from asset a LIMIT indeksline , 1";
$result3 = mysql_query($sql3);
$data3 = mysql_fetch_row($result3);
echo $data3[0];?>";
//Split Coordinate with delimiter |
mySplitResult = allcoor[a].split("|");
for (var j=0;j<count[a];j++)
{
va[a][j]=new google.maps.LatLng(parseFloat(mySplitResult[j].split(",")[0]),parseFloat(mySplitResult[j].split(",")[1]));
}
//Increment $indeksline that use for next polygon
<?php
$indeksline = $indeksline+1;
?>
}
var mapProp = {
center:x,
zoom:19,
mapTypeId: google.maps.MapTypeId.SATELLITE
};
map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
for(var i=0;i<2;i++)
{
var flightPath=new google.maps.Polygon({
path:va[i],
strokeColor:"##FF0000",
strokeOpacity:0.8,
strokeWeight:3,
fillColor:"##FF0000",
fillOpacity:0.35
});
flightPath.setMap(map);
问题在于循环,它不会增加变量php的indeksline,并且总是绘制第一个多边形。任何人帮助
php首先在服务器端上执行
javascript是随后在浏览器上执行的,因此您不能增加PHP变量。只使用它。
您不应该像这样混合PHP代码和Javascript。取出所有PHP代码,从数据库中读取,获取结果等。然后将您需要的内容传递给Javascript,并将其作为JS变量处理。
您应该像这样拆分代码。Php应该在你做任何事情之前向客户端(浏览器)提供所有数据,这意味着在javascript 中是完整的
php
<?php
include_once("koneksi.php");
$offset=0;
$limit=2; // you want to show two
$sql3="SELECT a.Informasi from asset a LIMIT $offset, $limit";
$result3 = mysql_query($sql3);
$data=[];
while( $dataRow= mysql_fetch_row($result3)){
$data[]=explode("|", $dataRow);
}
?>
javascript
<script>
// set javascript variable in php
var poly_data=<?php echo json_encode($data); ?>
var va=new Array();
for(a=0; a< poly_data.length ; a++){
//no of coordinates
var mySplitResult=poly_data[a];
va[a]=new Array();
//put the reset of code here
for (var j=0;j< mySplitResult.length; j++)
{
va[a][j]=new google.maps.LatLng(
parseFloat(mySplitResult[j].split(",")[0]),
parseFloat(mySplitResult[j].split(",")[1])
);
}
}
//your reset of code
</script>