Saya telah mengerjakan peta google (v3 dari api) yang merencanakan 120 marka atau lebih (atau akan segera dilakukan) - lihat http://www.mediwales.com/mapping . Jika Anda melihat sumbernya, data peta untuk semua tampilan, apakah mungkin menyembunyikan ini?
Saya tidak khawatir tentang kode yang menghasilkan peta, hanya data. Data diambil dari cms Wordpress.
Inilah kode yang menghasilkan semuanya:
<script type="text/javascript">
(function() {
window.onload = function() {
var mc;
// Creating an object literal containing the properties we want to pass to the map
var options = {
zoom: 10,
center: new google.maps.LatLng(52.40, -3.61),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
// Creating the map
var map = new google.maps.Map(document.getElementById('map'), options);
// Creating a LatLngBounds object
var bounds = new google.maps.LatLngBounds();
// Creating an array that will contain the addresses
var places = [];
// Creating a variable that will hold the InfoWindow object
var infowindow;
mc = new MarkerClusterer(map);
<?php
$pages = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order'));
$popup_content = array();
foreach($pages as $post)
{
setup_postdata($post);
$fields = get_fields();
$popup_content[] = '<p>'.$fields->company_name.'</p><img src="'.$fields->company_logo.'" /><br /><br /><a href="'.get_page_link($post->ID).'">View profile</a>';
$comma = ", ";
$full_address = "{$fields->address_line_1}{$comma}{$fields->address_line_2}{$comma}{$fields->address_line_3}{$comma}{$fields->post_code}";
$address[] = $full_address;
}
wp_reset_query();
echo 'var popup_content = ' . json_encode($popup_content) . ';';
echo 'var address = ' . json_encode($address) . ';';
?>
var geocoder = new google.maps.Geocoder();
var markers = [];
// Adding a LatLng object for each city
for (var i = 0; i < address.length; i++) {
(function(i) {
geocoder.geocode( {'address': address[i]}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
places[i] = results[0].geometry.location;
// Adding the markers
var marker = new google.maps.Marker({position: places[i], map: map});
markers.push(marker);
mc.addMarker(marker);
// Creating the event listener. It now has access to the values of i and marker as they were during its creation
google.maps.event.addListener(marker, 'click', function() {
// Check to see if we already have an InfoWindow
if (!infowindow) {
infowindow = new google.maps.InfoWindow();
}
// Setting the content of the InfoWindow
infowindow.setContent(popup_content[i]);
// Tying the InfoWindow to the marker
infowindow.open(map, marker);
});
// Extending the bounds object with each LatLng
bounds.extend(places[i]);
// Adjusting the map to new bounding box
map.fitBounds(bounds)
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
})(i);
}
var markerCluster = new MarkerClusterer(map, markers);
}
})
();
</script>
google-maps
php
rampok
sumber
sumber
popup_content
danaddress
?Jawaban:
Anda dapat menyimpan data Anda dalam database ( Fusion Tables adalah solusi cepat).
Google Maps memiliki tutorial yang menunjukkan kepada Anda cara melakukan ini dengan MySQL (tetapi dapat berupa basis data apa pun) http://code.google.com/apis/maps/articles/phpsqlajax_v3.html
Anda dapat merasa aman dan bingung seperti yang Anda inginkan menggunakan database back-end.
Sepertinya Anda melakukan geocode data dengan cepat - Anda akan dibatasi hingga 1000 permintaan sehari per alamat IP.
Akan lebih efisien untuk melakukan geocode dan kemudian memperbarui basis data mendekati waktu nyata.
sumber
Anda tidak akan dapat benar-benar menyembunyikan konten
popup_content
danaddress
dari pengguna, hanya karena apa pun yang dikirim ke halaman web jelas terlihat oleh pengguna akhir. Alih-alih membuang semuanya pada waktu buka, Anda dapat melakukan permintaan async untuk itu pada klik peta. Dalamclick
fungsi handler Anda, Anda ingin membuat permintaan dari halaman PHP untuk popup_content [i], dan buka infoWindow setelah permintaan selesai (secara bergantian, buka infoWindow segera dengan memuat ... teks, dan perbarui teks setelah itu) . Anda dapat menangani alamat dengan cara yang serupa.Catatan: solusi ini masih TIDAK menyembunyikan konten dari pengguna, itu hanya menunda pemuatan sehingga semua data tidak segera hadir. Ini juga akan berdampak negatif pada kinerja Anda.
Sebagai alternatif lain, Anda dapat mengaburkan data dengan beberapa cara. Anda juga dapat menampilkan data ke file JavaScript yang terpisah saat dimuat, sehingga data itu tidak langsung terlihat ketika pengguna mengklik Lihat Sumber. Sekali lagi, data sebenarnya tidak disembunyikan dari pengguna; itu hanya dihapus dari pandangan biasa.
sumber