Googleマップの使用時にデータを難読化する方法は?


9

私は120個程度のマーカーをプロットしている(またはAPIのv3)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、2011年

@SasaIvetic可能であれば両方。
Rob

回答:


7

データベースにデータを保存できますFusion Tablesは簡単なソリューションです)。

Googleマップには、MySQLでこれを行う方法を示すチュートリアルがあります(ただし、任意のデータベースを使用できます) http://code.google.com/apis/maps/articles/phpsqlajax_v3.html

データベースのバックエンドを使用して、必要なだけ安全で難読化できます。

オンザフライでデータをジオコーディングしているようです。IPアドレスごとに1日あたり1000リクエストに制限されます。

ジオコーディングしてデータベースをほぼリアルタイムで更新する方が効率的です。


1
Fusion Tablesへの素晴らしい提案!Fusion Tablesにはジオコーディングの制限がありますが、今は思い出せませんが、APIの制限よりはるかに高くなっています。唯一の欠点は、WordPressデータをFusion Tableと同期させておく必要がある(またはWordPressサイトでFusion Tablesデータを使用する)必要があることです。
Sasa Ivetic、2011年

これは素晴らしいアイデアです。APIの制限は最近変更されました。スペースについては別の回答として詳細を入力していますが、@ Mapperzが実際の回答を提供しました。私のものが模倣品として認識されないようにしたいだけです!
Ellie Kesselman、2011年

@Mapperzこれは間違いなく私が向かっていきたい方向です...私が方法を知っていれば!おそらくコードの例がいくつか必要になると思います...バウンティを追加します。
Rob

4

あなたは、実際の内容を隠すことができなくなりますpopup_contentし、addressWebページに送られるものは、エンドユーザーにわかりやすく表示されているという理由だけで、ユーザから。ただし、ロード時にすべてをダンプする代わりに、マップクリックで非同期リクエストを行うことができます。あなたにclick(交互に、...読み込んですぐにテキストを情報ウィンドウを開いて、その後テキストを更新)ハンドラ関数あなたは[i]はpopup_contentのためのPHPページからのリクエストをしたいだろう、とのリクエストが完了後、情報ウィンドウを開きます。同様の方法でアドレスを処理できます。

注:このソリューションでは、ユーザーからコンテンツを非表示にすることはできません。すべてのデータがすぐに表示されないように、読み込みを遅らせるだけです。また、パフォーマンスに悪影響を及ぼします。

別の方法として、何らかの方法でデータを難読化することもできます。ロード時に別のJavaScriptファイルにデータを出力することもできます。これにより、ユーザーが[ソースを表示]をクリックしたときにすぐには表示されません。この場合も、データは実際にはユーザーから隠されていません。単純に見えなくなっただけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.