Google маркеры по одному адресу не показывают все маркеры. Как показать все?
Привет,
У меня есть карта, которая показывает до 30 000 маркеров, все загруженные из таблицы базы данных магазина по запросу пользователя. но обычно он показывает до 1000 маркеров.
Проблема:
Некоторые широты и долготы в базе данных дублируются, что необходимо. когда они нанесены на карту, они накладываются друг на друга. В результате пользователь не может видеть все маркеры,они должны быть нажаты пользователем, чтобы показать больше информации и т. д.
Вопрос:
Можно ли показать на карте эти скрытые маркеры?
Спасибо.
Что я уже пробовал:
var map; //marker clusterer var mc; var mcOptions = {gridSize: 20, maxZoom: 17}; //global infowindow var infowindow = new google.maps.InfoWindow(); //geocoder var geocoder = new google.maps.Geocoder(); var address = new Array("1000 Market St, Philadelphia, PA","1000 Market St, Philadelphia, PA","1002 Market St, Philadelphia, PA","1004 Market St, Philadelphia, PA"); var content = new Array("1","2","3","4"); var min = .999999; var max = 1.000001; function createMarker(latlng,text) { ///get array of markers currently in cluster var allMarkers = mc.getMarkers(); //final position for marker, could be updated if another marker already exists in same position var finalLatLng = latlng; //check to see if any of the existing markers match the latlng of the new marker if (allMarkers.length != 0) { for (i=0; i < allMarkers.length; i++) { var existingMarker = allMarkers[i]; var pos = existingMarker.getPosition(); //if a marker already exists in the same position as this marker if (latlng.equals(pos)) { //update the position of the coincident marker by applying a small multipler to its coordinates var newLat = latlng.lat() * (Math.random() * (max - min) + min); var newLng = latlng.lng() * (Math.random() * (max - min) + min); finalLatLng = new google.maps.LatLng(newLat,newLng); } } } var marker = new google.maps.Marker({ position: finalLatLng }); google.maps.event.addListener(marker, 'click', function() { infowindow.close(); infowindow.setContent(text); infowindow.open(map,marker); }); return marker; } function geocodeAddress(address,i) { geocoder.geocode( {'address': address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var marker = createMarker(results[0].geometry.location,content[i]); mc.addMarker(marker); } else { alert("Geocode was not successful for the following reason: " + status); } }); } function initialize(){ var options = { zoom: 13, center: new google.maps.LatLng(39.96225,-75.13222), mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById('map'), options); //marker cluster mc = new MarkerClusterer(map, [], mcOptions); for (i=0; i<address.length;> geocodeAddress(address[i],i); } }