一連の住所をループして、別の住所から一定の距離内にあるもののリストを出力する方法を作成しようとしています。したがって、WordPress にはカスタム投稿タイプがあり、ループして次のようなアドレスの配列を作成しています。
<?php
$args = array( 'post_type' => 'friday_location', 'posts_per_page' => '-1' );
$arr = array();
$i=0;
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$meta = get_post_meta( $post->ID);
$string = $meta['_cmb_address'][0] . '+' . $meta['_cmb_city'][0] . '+' .$meta['_cmb_state'][0] . '+' .$meta['_cmb_zip'][0];
$string = str_replace(' ', '+', $string);
$arr[$i] = $string;
$i++;
endwhile;
wp_reset_postdata();
?>
この後、スクリプトタグ内でこのように配列を変換しています
var locations = <?php echo json_encode($arr ); ?>;
今、私はアドレスの JS 配列を持っていると思います。この配列を Google Maps API の距離マトリックスhttps://developers.google.com/maps/documentation/javascript/distancematrix#distance_matrix_requestsに渡したいと思っています。
関連するコードは次のようになります。
function calculateDistances() {
var opts = {
center: new google.maps.LatLng(38.6,-98),
zoom: 4,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'), opts);
geocoder = new google.maps.Geocoder();
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [origin2],
destinations: locations,
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.IMPERIAL,
avoidHighways: false,
avoidTolls: false
}, callback);
}
宛先が配列を取ることができることはわかっているので、動的に作成された配列を指定しようとしていますが、頭の中で見ているように機能しない理由はわかりません:)