Come offuscare i dati quando si utilizza Google Maps?


9

Ho lavorato su una mappa di Google (v3 dell'API) che sta pianificando circa 120 marcatori (o lo farà a breve) - vedi http://www.mediwales.com/mapping . Se visualizzi la fonte che i dati della mappa sono per tutto ciò che vedi, è possibile nasconderlo?

Non sono preoccupato per il codice che sta generando la mappa, ma solo per i dati. I dati vengono catturati da un cms Wordpress.

Ecco il codice che sta generando tutto:

<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>

A quali dati ti riferisci? popup_contente address?
Sasa Ivetic,

@SasaIvetic Entrambi se possibile.
Rob,

Risposte:


7

Puoi archiviare i tuoi dati in un database ( Fusion Tables è una soluzione rapida).

Google Maps ha un tutorial che ti mostra come farlo con MySQL (ma può essere qualsiasi database) http://code.google.com/apis/maps/articles/phpsqlajax_v3.html

Puoi essere sicuro e offuscato come desideri utilizzando un back-end di database.

Sembra che tu abbia geocodificato i tuoi dati al volo - avrai un limite di 1000 richieste al giorno per indirizzo IP.

Sarebbe più efficiente geocodificare e quindi aggiornare il database quasi in tempo reale.


1
Ottimo consiglio per i tavoli Fusion! Fusion Tables ha un limite di geocodifica, anche se non riesco a ricordarlo ora, ma è MOLTO superiore al limite API. L'unico inconveniente è che dovrai mantenere i tuoi dati wordpress sincronizzati con una Fusion Table (o in alternativa utilizzare i dati Fusion Tables nel tuo sito wordpress).
Sasa Ivetic,

Questa è una grande idea. I limiti dell'API sono cambiati di recente. Sto inserendo i dettagli come una risposta separata, per spazio, ma @Mapperz ha dato la risposta REALE, voglio solo assicurarmi che il mio non sia percepito come un copione!
Ellie Kesselman,

@Mapperz Questa è sicuramente la direzione in cui voglio andare ... se solo sapessi come! Penso che probabilmente avrò bisogno di alcuni esempi del codice ... Aggiungerò una taglia.
Rob

4

Non sarai in grado di nascondere effettivamente il contenuto di popup_contente addressall'utente, semplicemente perché tutto ciò che viene inviato a una pagina web è chiaramente visibile all'utente finale. Invece di scaricare tutto al momento del caricamento, puoi fare una richiesta asincrona con un clic sulla mappa. Nella tua clickfunzione di gestore vorresti fare una richiesta dalla pagina PHP per popup_content [i] e aprire la finestra informativa una volta completata la richiesta (in alternativa, apri subito la finestra informativa con Caricamento in corso ... testo e aggiorna il testo in seguito) . Puoi gestire gli indirizzi in modo simile.

Nota: questa soluzione NON nasconde ancora il contenuto all'utente, semplicemente ritarda il caricamento in modo che tutti i dati non siano immediatamente presenti. Avrà anche un impatto negativo sulle tue prestazioni.

In alternativa, potresti in qualche modo offuscare i dati. Puoi anche generare i dati in un file JavaScript separato al caricamento, in questo modo non sono immediatamente visibili quando l'utente fa clic su Visualizza sorgente. Ancora una volta, i dati non sono effettivamente nascosti all'utente; viene semplicemente rimosso dalla vista.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.