Здравствуйте и с юбилеем (относительно вашего вопроса и учебника).Я веб-разработчик и должен поблагодарить вас.Я использовал этот учебник, так как в настоящее время у меня нет способа геокодировать с помощью отправки (широта / долгота должна быть извлечена из адреса, сохраненного в БД), поскольку я обращаюсь к существующему сайту и имею минимальный доступ к коду бэкенда.
Чтобы ответить на ваш вопрос о маркере интерактивности, нужно выполнить несколько простых шагов:
1) Предоставить некоторый контент.Это делается перед объявлением геокодера (var geocoder;):
var contentString =
'line 1'+
'line 2';
2) Под объявлением маркера (var marker = new google.maps.Marker ({) вам нужно будет объявить информационное окно и добавитьслушатель события:
var infowindow = new google.maps.InfoWindow({
content: contentString
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
Редактировать:
Я успешно извлек информацию массива из базы данных MySQL, расширив ваш метод. Мой метод здесь:
1) Базовый php ниже:
include (dbinfo.php)
$result = mysql_query( 'SELECT * FROM table')
$count = 0
2) Настройка API Google Maps:
<script type="text/javascript"
src="http://maps.googleapis.com/maps/api/js?key=yourkey&sensor=false">
</script>
3) Настройка геокодирования ниже:
<script type="text/javascript">
var geocoder;
var map;
function initialize() {
var latlng = new google.maps.LatLng(yourlat, yourlong); //This is to center the map
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
<?php //Starts while loop so all addresses for the given information will be populated.
while($row = mysql_fetch_array($result)) //instantiates array
{ ?>
geocoder = new google.maps.Geocoder();
var address = '<?php echo $row['address'].', '.$row['city'].', '.$row['state'].', '.$row['zip'].', '.$row['country']; ?>';
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//marker generation is done though adding the primary ID to the "marker" variable, so if address "1" has the primary ID of "1", your marker would read "marker1"
var marker<?php print $row['primaryID']; ?> = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: "This can be a php variable or whatever you like. It is displayed on hover."
});
//var contentString manages what is seen inside of the popup
var contentString =
'line 1'+
'line 2';
var infowindow = new google.maps.InfoWindow({
content: contentString
});
google.maps.event.addListener(marker<?php print $row['primaryID']; ?>, 'click', function() {
infowindow.open(map,marker<?php print $row['primaryID']; ?>);
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
<?php
$count++;
} //ends while
?>
}
/*end javascript*/
</script>
Большое спасибо еще раз за размещение этого.Это было очень полезно.