Google지도를 사용할 때 데이터를 난독 처리하는 방법은 무엇입니까?


9

120 개의 마커를 표시하는 Google지도 (api의 v3)에서 작업 중입니다 (또는 곧 할 것입니다)-http: //www.mediwales.com/mapping 참조 하십시오 . 지도 데이터가 모든 참조 용인 소스를 보는 경우이를 숨길 수 있습니까?

지도를 생성하는 코드가 아니라 데이터 만 걱정하지 않습니다. 데이터는 Wordpress cms에서 가져옵니다.

모두 생성하는 코드는 다음과 같습니다.

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

어떤 데이터를 언급하고 있습니까? popup_content그리고 address?
Sasa Ivetic

@SasaIvetic 가능하다면 둘 다.
Rob

답변:


7

데이터베이스에 데이터를 저장할 수 있습니다 ( Fusion Tables 는 빠른 솔루션입니다).

Google지도에는 MySQL을 사용하여이 작업을 수행하는 방법을 보여주는 자습서가 있지만 모든 데이터베이스가 될 수 있습니다. http://code.google.com/apis/maps/articles/phpsqlajax_v3.html

데이터베이스 백엔드를 사용하여 원하는만큼 안전하고 난독 처리 할 수 ​​있습니다.

데이터를 즉석에서 지오 코딩하는 것처럼 보입니다. IP 주소 당 하루 1000 개의 요청으로 제한됩니다.

지오 코딩 한 다음 데이터베이스를 거의 실시간으로 업데이트하는 것이 더 효율적입니다.


1
퓨전 테이블에 대한 좋은 제안! Fusion Tables에는 지오 코딩 제한이 있지만 지금은 기억할 수 없지만 API 제한보다 훨씬 높습니다. 단점은 워드 프레스 데이터를 Fusion Table과 동기화 된 상태로 유지해야한다는 것입니다 (또는 워드 프레스 사이트에서 Fusion Tables 데이터를 번갈아 사용).
Sasa Ivetic

이것은 좋은 생각입니다. 최근 API 한도가 변경되었습니다. 공간에 대한 별도의 답변으로 세부 정보를 입력하고 있지만 @Mapperz는 REAL 답변을했으며 내 것이 모방품으로 인식되지 않도록하고 싶습니다!
Ellie Kesselman

@Mapperz 이것은 내가 향하고 싶은 방향입니다. 아마도 코드의 예가 필요할 것 같습니다. 현상금을 추가하겠습니다.
Rob

4

당신은 실제로의 내용을 숨길 수 없습니다 popup_contentaddress웹 페이지로 전송됩니다 아무것도 최종 사용자에게 분명하게 볼 수 있습니다 간단하기 때문에, 사용자로부터. 그러나로드 타임에 모두 덤프하는 대신 맵 클릭에서 비동기 요청을 수행 할 수 있습니다. 당신의에서 click핸들러 함수는 popup_content [I]의 PHP 페이지에서 요청을하고, 요청 완료되면 정보창 열 (교대를 바로로드 중 ... 텍스트로 정보창을 열고 나중에 텍스트를 업데이트) 할 것 . 비슷한 방식으로 주소를 처리 할 수 ​​있습니다.

참고 :이 솔루션은 여전히 ​​사용자의 콘텐츠를 숨기지 않으며 단순히 모든 데이터가 즉시 표시되지 않도록로드를 지연시킵니다. 또한 성능에 부정적인 영향을 미칩니다.

다른 대안으로, 어떤 방식 으로든 데이터를 난독 처리 할 수 ​​있습니다. 로드시 별도의 JavaScript 파일로 데이터를 출력 할 수도 있습니다. 이렇게하면 사용자가 소스보기를 클릭 할 때 즉시 표시되지 않습니다. 다시 말하지만 데이터는 실제로 사용자에게 숨겨져 있지 않습니다. 그것은 평범한 시야에서 단순히 제거됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.