使用Google地图时如何混淆数据?


9

我一直在研究google地图(api的v3),该地图正在绘制120个左右的标记(或将很快绘制)-请参阅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_contentaddress
Sasa Ivetic,2011年

@SasaIvetic都可以。
罗布

Answers:


7

您可以将数据存储在数据库中Fusion Tables是一种快速的解决方案)。

Google Maps有一个教程,向您展示如何使用MySQL(但可以是任何数据库)执行此操作 http://code.google.com/apis/maps/articles/phpsqlajax_v3.html

您可以使用数据库后端获得所需的安全性和混淆性。

好像您正在对数据进行地理编码-每个IP地址每天最多只能请求1000个请求。

对地理编码然后近乎实时地更新数据库将更加有效。


1
融合桌的好建议!Fusion Tables有一个地址解析限制,尽管我现在不记得了,但是它比API限制要高得多。唯一的缺点是您需要将您的wordpress数据与Fusion Table保持同步(或在您的wordpress网站中交替使用Fusion Tables数据)。
2011年

这是一个好主意。API限制最近已更改。我正在输入详细信息作为空间的单独答案,但是@Mapperz提供了REAL答案,只是想确保我的观点不被视为模仿者!
Ellie Kesselman,

@Mapperz这绝对是我要去的方向...只要我知道怎么做!想想我可能需要一些代码示例...我会添加一个赏金。
罗布

4

您将无法真正隐藏用户的内容,popup_contentaddress不能向用户隐藏内容,这仅仅是因为发送到网页的任何内容对于最终用户都是显而易见的。不过,您可以在地图点击时对其进行异步请求,而不是在加载时全部将其转储。在click处理程序函数中,您想从PHP页面中请求popup_content [i],并在请求完成后打开infoWindow(或者,立即用“正在加载...”文本打开infoWindow,然后再更新文本) 。您可以用类似的方式处理地址。

注意:此解决方案仍然不会向用户隐藏内容,只是会延迟加载,因此不会立即显示所有数据。这也会对您的表现产生负面影响。

作为另一种选择,您可以以某种方式混淆数据。您还可以在加载时将数据输出到单独的JavaScript文件,这样当用户单击“查看源代码”时就不会立即看到它们。同样,数据实际上并未向用户隐藏。只需将其从视线中移开即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.