Hi, my code is very long and messy and if you don’t mind i enclosed below.
I also put my project at this url : https://360.yo.fr/mapcluster/map3am
The problem is when select dropdown “KOH” suppose there are 130 markers but only displayed 3.
If select other dropdown (Jacob or Tay), it will filter according to the json file criteria based on “photo_file_url” but only displayed some markers also not correct (no. of markers)
Hope this got better explanation on my question.
function $(element) {
return document.getElementById(element);
}
var speedTest = {};
speedTest.pics = null;
speedTest.map = null;
speedTest.markerClusterer = null;
speedTest.markers = [];
speedTest.infoWindow = null;
speedTest.init = function() {
var latlng = new google.maps.LatLng(1.525420, 103.712070);
var options = {
'zoom': 10,
'center': latlng,
'mapTypeId': google.maps.MapTypeId.ROADMAP
};
speedTest.map = new google.maps.Map($('map2'), options);
speedTest.pics = data.photos;
var useGmm = document.getElementById('usegmm');
google.maps.event.addDomListener(useGmm, 'click', speedTest.change);
var numMarkers = document.getElementById('nummarkers');
google.maps.event.addDomListener(numMarkers, 'change', speedTest.change);
speedTest.infoWindow = new google.maps.InfoWindow();
speedTest.showMarkers();
};
speedTest.showMarkers = function() {
speedTest.markers = [];
var type = 1;
if ($('usegmm').checked) {
type = 0;
}
if (speedTest.markerClusterer) {
speedTest.markerClusterer.clearMarkers();
}
var panel = $('markerlist');
panel.innerHTML = '';
//............................................................
var numMarkers = $('nummarkers').value;
// category
for (var i = 0; i < numMarkers.length; i++) {
var titleText = speedTest.pics[i].photo_title; //-----------
if (titleText === '') {
titleText = 'No title';
marker = gmarkers1[i];
}
var item = document.createElement('DIV');
var title = document.createElement('A');
title.href = '#';
title.className = 'title';
title.innerHTML = titleText;
item.appendChild(title);
panel.appendChild(item);
var latLng = new google.maps.LatLng(speedTest.pics[i].latitude,
speedTest.pics[i].longitude);
var imageUrl = 'http://chart.apis.google.com/chart?cht=mm&chs=24x32&chco=' +
'FFFFFF,008CFF,000000&ext=.png';
var markerImage = new google.maps.MarkerImage(imageUrl,
new google.maps.Size(24, 32));
//var category = marker[4]; //------------>23
var marker = new google.maps.Marker({
'position': latLng,
'icon': 'images/marker1.png',
// category: category, //------------>23
});
var fn = speedTest.markerClickFunction(speedTest.pics[i], latLng);
google.maps.event.addListener(marker, 'click', fn);
google.maps.event.addDomListener(title, 'click', fn);
speedTest.markers.push(marker);
}
window.setTimeout(speedTest.time, 0);
};
speedTest.markerClickFunction = function(pic, latlng) {
return function(e) {
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
var did = pic.photo_id;
var owner_id = pic.owner_id
var title = pic.photo_title;
var url = pic.photo_url;
var fileurl = pic.photo_file_url;
var update = pic.upload_date;
var flex = pic.flexcode
var RANK = pic.GAR_RANK
var wall = pic.wall
var counter = pic.counter
var incounter = pic.incounter
var ceiling = pic.ceiling
var nhc = pic.nhc
var red = pic.red_outlet
var profile = pic.profile
var star_p = pic.star_p
var star_q = pic.star_q
var star_b = pic.star_b
var star_s = pic.star_s
var star_l = pic.star_l
var star_overall = pic.star_overall
var H1 = pic.H1
var H2 = pic.H2
var H3 = pic.H3
var H4 = pic.H4
var H5 = pic.H5
var H6 = pic.H6
var F1 = pic.F1
var F2 = pic.F2
var F3 = pic.F3
var F4 = pic.F4
var F5 = pic.F5
var F6 = pic.F6
var infoHtml = '<div class="info">' + '<b>' + '1.Prepaid Code: ' + '</b>' + did + '<br/>' + '<b>' + '2.Name: ' + '</b>' + title + '<br/>' + '<b>' + '3.Class: ' + '</b>' + owner_id + '<br/>' + '<b>' + '4.AM: ' + '</b>' + fileurl +
'<BR/>' +
'<b>' +
'5.DAE: ' + '</b>'
+
pic.owner_name +
'<b>' +
'<BR/>6.AT: '
+
'</b>' + update +
'<BR/>' +
'-----------------------------------------------------' +
'<br/>' + 'This dealer is ' + '<font color="red">' + '<b>' + pic.owner_url + '</b>' + '</b>' + '</font>' +
'<br/>' + '<b>' + '7.Flex code: ' + '</b>' + flex +
'<br/>' + '<b>' + '8.Red Outlet: ' + '</b>' + red +
'<br/>' + '<b>' + '9.Profile: ' + '</b>' + profile +
'<BR/>' +
'-----------------------------------------------------' +
'<BR/>' +
'<font color="red">' +
'KOH Rating : ' + star_overall + "/10" + '</b>' + '</font>' +
'<br/>' + 'Product Range ' + '<img src="https://www.360.yo.fr/mapcluster/images/' + star_p + 's' + '"/>' +
'<br/>' + 'Sales Quality ' + '<img src="https://www.360.yo.fr/mapcluster/images/' + star_q + 's' + '"/>' +
'<br/>' + 'Branding ' + '<img src="https://www.360.yo.fr/mapcluster/images/' + star_b + 's' + '"/>' +
'<br/>' + 'Good Location ' + '<img src="https://www.360.yo.fr/mapcluster/images/' + star_l + 's' + '"/>' +
'<br/>' + 'Sustainability ' + '<img src="https://www.360.yo.fr/mapcluster/images/' + star_s + 's' + '"/>' +
'<BR/>' +
'<BR/>' + '<font color="red">' +
'1.ShopFront ' + '</font>' +
'</h3><div class="info-body">' +
'<a href="' + url + '" target="_blank"><img src="' +
url + '" class="info-img" onerror="imgError(this);"/></a></div>'
+
'<a href="' + wall + '"target="_blank">' + '2.Wall' + '</a>' +
' | '
+
'<a href="' + counter + '"target="_blank">' + '3.Counter' + '</a>' +
' | '
+
'<a href="' + incounter + '"target="_blank">' + '4.InCounter' + '</a>' +
' | '
+
'<a href="' + ceiling + '"target="_blank">' + '5.Ceiling' + '</a>'
+
'<BR/>' + '<BR/>' +
'</a></div></div>';
speedTest.infoWindow.setContent(infoHtml);
speedTest.infoWindow.setPosition(latlng);
speedTest.infoWindow.open(speedTest.map);
};
};
speedTest.clear = function() {
$('timetaken').innerHTML = 'cleaning...';
for (var i = 0, marker; marker = speedTest.markers[i]; i++) {
marker.setMap(null);
}
};
speedTest.change = function() {
speedTest.clear();
speedTest.showMarkers();
};
speedTest.time = function() {
$('timetaken').innerHTML = 'timing...';
var start = new Date();
if ($('usegmm').checked) {
speedTest.markerClusterer = new MarkerClusterer(speedTest.map, speedTest.markers, {
imagePath: 'images/m'
});
} else {
for (var i = 0, marker; marker = speedTest.markers[i]; i++) {
marker.setMap(speedTest.map);
}
}
var end = new Date();
$('timetaken').innerHTML = end - start;
};
google.maps.event.addDomListener(window, 'load', speedTest.init);
var img = new Image();
var div = document.getElementById('map2');
img.onload = function() {
div.appendChild(img);
};
img.src = 'images/m1'