Я создаю карту для пользователей на моем сайте.Как это работает, я использую PHP и AJAX для получения всех адресов пользователей сайтов, затем я передаю эти значения в JS как JSON, где я генерирую карту Google, центрированную вокруг адреса текущего пользователя, с маркером для каждого пользователя на карте.Эта часть работает в данный момент, но я борюсь с тем, чтобы создать уникальное информационное окно для каждого пользователя.Как сейчас, я получаю одинаковое информационное окно для всех маркеров, как я могу это исправить?
JS
jQuery(document).ready(function($){
$.ajax({
url: ajax_url,
type: 'post',
dataType: 'json',
data: {
action: 'map'
},
error : function(response){
console.log(response);
},
success : function(response){
var mapOptions = {
zoom: 16,
}
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow();
// current user position
geocoder.geocode({'address': response.current[0].postcode}, function(results, status){
map.setCenter( results[0].geometry.location );
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
});
// other users loop
for( var i = 0; i < response.other.length; i++ ){
var postcode = response.other[i].postcode;
geocoder.geocode( {'address': postcode}, function(results, status){
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
google.maps.event.addListener(marker, 'click', function(){
infowindow.close(); // Close previously opened infowindow
infowindow.setContent( "<div id='infowindow'>"+ postcode +"</div>");
infowindow.open(map, this);
});
});
}
var map = new google.maps.Map(document.getElementById("buddy_map"), mapOptions);
return false;
}
});
});
PHP
add_action('wp_ajax_nopriv_map', 'addresses');
add_action('wp_ajax_map', 'addresses');
function addresses(){
global $current_user;
$address_street = get_user_meta( $current_user->ID, 'shipping_address_1', true );
$address_city = get_user_meta( $current_user->ID, 'shipping_city', true );
$address_postcode = get_user_meta( $current_user->ID, 'shipping_postcode', true );
$address = $address_street . ', ' . $address_city . ', ' . $address_postcode;
$cur_user[] = array(
"postcode" => $address
);
$other_users[] = array(
"postcode" => "LS11 6NA"
);
$other_users[] = array(
"postcode" => "LS11 6LY"
);
echo json_encode( array( "current" => $cur_user, "other" => $other_users) );
die();
}
Я знаю, что мой файл PHP нуждается в некоторой работе, это просто грубаячерновик, чтобы заставить это работать первым.