Мы создаем сайт с Wordpress с интегрированной системой Gmaps, чтобы показать местоположение мест для рыбалки. Он заполняется сообщениями, связанными с каждым состоянием, а также долготой и широтой, введенными в пользовательские поля. Карта отлично работает. Проблема состоит в том, что некоторые состояния имеют 1000+ маркеров, которые вызывают некоторое отставание от загрузки страницы, а маркеры сложены друг над другом, что делает его нелепым в использовании. Нам хотелось бы ограничить количество контактов, прежде чем отображать все маркеры. Для уточнения:Необходимо остановить отображение маркеров карты до тех пор, пока счет не достигнет 200
- В Калифорнии есть 1000+ озер, но в Аризоне около 165. ЕСЛИ общая сумма более 200, тогда простое сообщение должно показать посетителю, что есть «слишком много записей, пожалуйста, увеличьте масштаб, чтобы просмотреть выбор» или аналогичный. Затем,
- По мере того, как они увеличивают масштаб, он будет пересчитывать общее количество, а когда ему меньше 200 (или какой бы ни был лимит, на который мы фактически положили, только столько состояний имеют больше, чем), тогда маркеры будут отображаться в соответствии с областью, увеличенной до
Вид, когда они прибывают на страницу состояния, показывает все состояние и все маркеры. Если более 200 отсчетов, то он должен просто отображать сообщение для увеличения и т. Д. В любом случае будет указано более 50 000 озер, поэтому эта модификация значительно облегчит загрузку страницы.
Вот код, в настоящее время мы работаем с этим тянет данные и отображает карту:
<script type="text/javascript">
jQuery(document).ready(function(){
function initialize() {
var myLatlng = new google.maps.LatLng(<?php echo $center_final; ?>);
var myOptions = {
zoom: <?php echo $zoom; ?>,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.<?php echo $type; ?>
};
var map = new google.maps.Map(document.getElementById("featured_overview"), myOptions);
<?php if(get_option('woo_maps_archive_scroll') == 'true'){ ?>
map.scrollwheel = false;
<?php } ?>
<?php foreach($coords as $c_key => $c_value) { ?>
var point = new google.maps.LatLng(<?php echo $c_value['coords']; ?>);
var root = "<?php bloginfo('template_url'); ?>";
var the_link = '<?php echo get_permalink($c_key); ?>';
<?php $title = str_replace(array('“','”'),'"',get_the_title($c_key)); ?>
<?php $title = str_replace('–','-',$title); ?>
<?php $title = str_replace('’',"`",$title); ?>
<?php $title = str_replace('&','&',$title); ?>
var the_title = '<?php echo html_entity_decode($title) ?>';
var color = '<?php echo $c_value['color']; ?>';
createMarker(map,point,root,the_link,the_title,color);
<?php } ?>
}
initialize();
});
</script>
Любая помощь будет принята с благодарностью. Спасибо заранее всем и каждому.
Я хотел бы предложить взглянуть на это: http://stackoverflow.com/questions/1356321/load-markers-on-google-maps-dynamic-on-map-move-drag-pan - еще один вариант - сначала выполнить запрос в БД, чтобы получить количество маркеров на основе окна просмотра (вы вам нужно сделать запрос на выборку). Если общее количество маркеров> X, тогда отобразите сообщение для увеличения, иначе покажите маркеры. Затем вы настроили прослушиватели событий для изменения карты, а затем выполните запрос ajax для обновления маркеров на карте (или для отображения сообщения). – andresf