我正在尝试为wordpress帖子整理一个谷歌地图,其中有一个lat和long保存为元值。
我需要将lat和long输出作为列表中的两个单独值,以便我可以使用result [1]和result [2]调用它们。现在我可以同时输出lat和long但是它们在列表中是单独的条目(即每个帖子标题将被列出两次,一次用于lat,一次用于long,我需要将它列为lat,long为long两次它的价值观)
以下是代码现在的样子(printf只是为了测试$ result的输出):
<?php
$lat = 'latitude';
$long = 'longitude';
$results = $wpdb->get_results( "
SELECT
post_title,
meta_value
FROM {$wpdb->posts}
INNER JOIN {$wpdb->postmeta}
ON ( $wpdb->posts.ID = {$wpdb->postmeta}.post_id )
WHERE meta_key = '$lat'
OR meta_key = '$long'
" );
foreach( $results as $result )
{
printf( '<pre>%s</pre>', htmlspecialchars( var_export( $result, true ) ) );
}
?>
<style type="text/css">
html, body { height: 100%; margin: 0; padding: 0; }
#map { height: 350px; width:100%; }
</style>
<script type="text/javascript">
// MAP
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 11,
center: {lat: 53.343156, lng: -6.258545},
scrollwheel: false
});
setMarkers(map);
}
// LOCATIONS
var locations = [
<?php
foreach( $results as $result ) {
echo "\t\t\t['"
. str_replace("'", "\'", $result[0])
. "', " . $result[1]
. ", '" . $result[3] . "'"
. "],\n";
} ?> ];
function setMarkers(map) {
// Adds markers to the map.
for (var i = 0; i < results.length; i++) {
var result = results[i];
var marker = new google.maps.Marker({
position: {lat: result[1], lng: result[2]},
map: map,
title: result[0]
});
}
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=MyMapKey&callback=initMap">
</script>
建议非常感谢。