1

この問題に関して多くのトピックがあることは知っていますが、すべてを試しましたが、問題の解決策はまだありません。

メンバーの位置に応じて、メンバーを 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);
}
}
4

1 に答える 1

1

ドキュメントのジオコーディング戦略に関するこの記事を参照してください

ベスト プラクティスは、変更されない場所の座標を保存し、それらを使用してマーカーを表示することです。クライアント側のジオコーダーを使用して、ユーザーが入力した情報のみをジオコーディングします。

于 2012-07-26T21:18:36.163 に答える