この問題に関して多くのトピックがあることは知っていますが、すべてを試しましたが、問題の解決策はまだありません。
メンバーの位置に応じて、メンバーを Google マップに表示しようとしています。問題は、34 人のメンバーが登録されているにもかかわらず、15 ~ 22 個のマーカー (更新ごとにランダムに選択) しか表示されないことです。
メンバーページに入ると、そのマーカーが正確に地図上に表示されるため、住所は正しくジオコーディングされています。データの読み込みに問題があると思いますが、解決方法がわかりません。
Joomla サイトで swmap プラグインを使用しています。JQuery コードを以下に示します。
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&language='.$locale.'"></script>
<script type="text/javascript">
window.addEvent("load",function(){initialize();});
var beaches = '.json_encode($res).';
function initialize() {
var myLatlng = new google.maps.LatLng('.$lat_center.', '.$long_center.');
var myOptions = {
zoom: 10,
center: myLatlng,
mapTypeControl: true,
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
navigationControl: true,
mapTypeId: google.maps.MapTypeId.'.$cattype.'
}
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
google.maps.event.addListener(map, \'click\', function() {
infowindow.close();
});
setMarkers(map, beaches);
}
var icons = new Array();
icons["red"] = new google.maps.MarkerImage("'. JURI::root() .'plugins/k2/swmap/'.$color.'/landmark.png",
new google.maps.Size(32, 32),
new google.maps.Point(0,0),
new google.maps.Point(0, 32));
function getMarkerImage(iconColor) {
if ((typeof(iconColor)=="undefined") || (iconColor==null)) {
iconColor = "red";
}
if (!icons[iconColor]) {
icons[iconColor] = new google.maps.MarkerImage("'. JURI::root() .'plugins/k2/swmap/'.$color.'/"+ iconColor +"",
new google.maps.Size(32, 32),
new google.maps.Point(0,0),
new google.maps.Point(0, 32));
}
return icons[iconColor];
}
var iconImage = new google.maps.MarkerImage(\''. JURI::root() .'plugins/k2/swmap/'.$color.'/landmark.png\',
new google.maps.Size(32, 32),
new google.maps.Point(0,0),
new google.maps.Point(0, 32));
var infowindow = new google.maps.InfoWindow(
{
size: new google.maps.Size(150,50)
});
function createMarker(map, latlng, label,link, html, color) {
var contentString = \'<b>\'+link+\'</b><br>\'+html;
var marker = new google.maps.Marker({
position: latlng,
map: map,
icon: getMarkerImage(color),
title: label,
zIndex: Math.round(latlng.lat()*-100000)<<5
});
google.maps.event.addListener(marker, \'click\', function() {
infowindow.setContent(contentString);
infowindow.open(map,marker);
});
}
function setMarkers(map, locations) {
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < locations.length; i++) {
var beach = locations[i];
var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
var marker = createMarker(map,myLatLng,beach[0],beach[5],beach[4],beach[3]);
bounds.extend(myLatLng);
map.fitBounds(bounds);
}
}