Bagaimana cara mengaburkan data saat menggunakan Google Maps?

9

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>
rampok
sumber
Data apa yang Anda maksud? popup_contentdan address?
Sasa Ivetic
@ Sasasavetic Keduanya jika memungkinkan.
Rob

Jawaban:

7

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.

Mapperz
sumber
1
Saran bagus untuk Tabel Fusion! Fusion Tables memiliki batas geocoding, meskipun saya tidak dapat mengingatnya sekarang, tetapi JAUH lebih tinggi dari batas API. Hanya kekurangannya adalah Anda perlu menyimpan data wordpress Anda disinkronkan dengan Fusion Table (atau secara bergantian menggunakan data Fusion Tables di situs wordpress Anda).
Sasa Ivetic
Ini ide yang bagus. Batas API telah berubah baru-baru ini. Saya memasukkan detail sebagai jawaban terpisah, untuk ruang, tetapi @Mapperz memberikan jawaban NYATA, hanya ingin memastikan bahwa milik saya tidak dianggap sebagai peniru!
Ellie Kesselman
@Mapperz Ini jelas arah yang ingin saya tuju ... kalau saja saya tahu caranya! Pikir saya mungkin perlu beberapa contoh kode ... Saya akan menambahkan hadiah.
Rob
4

Anda tidak akan dapat benar-benar menyembunyikan konten popup_contentdan addressdari 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. Dalam clickfungsi 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.

Sasa Ivetic
sumber