【发布时间】:2015-01-18 12:27:11
【问题描述】:
我对编程非常陌生,因此有一些“疑问”。我没有排序的一个是关于如何将某种格式的数据从 php 传递到 html。关于交流。
我想要做的是使用这部分程序在谷歌地图中插入 gps 位置。
有效的一点:我可以像单个字符串一样将数据从 php 导出到 html 如果我输入数据表单html,我可以根据需要绘制地图
我的理解是 php 数组的格式与 html var 所需的输入不兼容。这是代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Google Maps Multiple Markers</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.1.min.js"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 400px;"></div>
<script type="text/javascript">
// Define your locations
**var locations = [
['<h4>One</h4>', -30.2, 100.6],
['<h4>Two</h4>', -31.2, 100.7],
['<h4>Three</h4>', -32.2, 100.8]
];**
var iconURLPrefix = 'http://maps.google.com/mapfiles/ms/icons/';
var icons = [
iconURLPrefix + 'red-dot.png',
iconURLPrefix + 'green-dot.png',
iconURLPrefix + 'blue-dot.png',
iconURLPrefix + 'orange-dot.png'
]
var icons_length = icons.length;
var shadow = {
anchor: new google.maps.Point(15,33),
url: iconURLPrefix + 'msmarker.shadow.png'
};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(-37.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
streetViewControl: false,
panControl: false,
zoomControlOptions: {
position: google.maps.ControlPosition.LEFT_BOTTOM
}
});
var infowindow = new google.maps.InfoWindow({
maxWidth: 160
});
var marker;
var markers = new Array();
var iconCounter = 0;
// Add the markers and infowindows to the map
for (var i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
icon : icons[iconCounter],
shadow: shadow
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
iconCounter++;
if(iconCounter >= icons_length){
iconCounter = 0;
}
}
function AutoCenter() {
// Create a new viewpoint bound
var bounds = new google.maps.LatLngBounds();
// Go through each...
$.each(markers, function (index, marker) {
bounds.extend(marker.position);
});
// Fit these bounds to the map
map.fitBounds(bounds);
}
AutoCenter();
</script>
</body>
</html>
理想情况下,我想用我已经在 php 中构建的变量替换 var 位置(到目前为止是在同一页面中构建的),然后将其传递给 var 位置。
我尝试通过以下方式传递数组:
<?php
$locations = array();
for ($x = 0; $x <= 3; $x++) {
$locations[] = ['One',$x,$x+1,$x+2];
}
$loc = $_POST[$locations];
//$loc = $_POST['<h4>Bondi Beach</h4>, -33.890542, 151.274856'];
print_r ($locations);
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var cars = <?php print_r ($loc); ?>;
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
但没有运气。无论如何都可以支持吗? 非常感谢
----------------------------------------------- --------------
更新!!!感谢大家,我设法确定如何传递变量
<?php
$arr = array("Bondi Beach",",-33.890542",",151.274856");
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var locations = <?php echo json_encode($arr) ?>;
document.getElementById("demo").innerHTML = locations[1];
</script>
</body>
</html>
现在下一步是尝试传递一个数组...尝试了以下但再次不起作用...
<?php
$arr = array();
for ($x = 0; $x <= 3; $x++) {
$arr[] = ["One",$x,$x*2];
};
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var arr = new Array(3);
for (i = 0; i <= 3; $i++) {
arr[i] = <?php echo json_encode($arr[i]) ?>;
}
document.getElementById("demo").innerHTML = arr[1];
</script>
</body>
</html>
也许是个太天真的尝试……
排序
感谢大家的支持。我希望很快见到你(作为我网站的成员!)
非常感谢:-)
伊曼纽尔
【问题讨论】:
-
@Murplyx 试图引导 JSON 的奇妙世界。一种设计用于在语言和其他来源之间传输数据的语言。 javascript 和 PHP 都可以将对象编码和解码为 JSON,使它们可以互换。
-
@Murplyx 你刚刚评论了一个链接。该链接重定向到解释 JSON 的页面。看来 OP 对 JSON 并不十分熟悉。一些解释可能是必要的。我试图为您的评论提供更多关于 OP 的背景信息。
-
接受一个帮助您朝着正确方向发展的答案是件好事。
-
@Mouser 我想投票给最佳答案,但还没有这样做的声誉(我需要 15 个而不是我实际的 6 个),再次感谢大家
标签: javascript php html google-maps format