0

コードが複数のリストをより適切に処理できるように、これをきれいにするにはどうすればよいですか? 配列からマーカー情報を取得するコード例をいくつか見ましたが、それを機能させることができないようです。

マーカーには、「icon:」、「url:」、および「title:」属性が必要です。各マーカーの外観を変更できる「icon:」、各マーカー専用のページを指す「url:」、ホバー時にマーカー名を追加するための「title」。

データベースなどから配列を収集していないため、スクリプトにも配列が必要です。

JavaScript と Google マップ API に関しては、私はかなりグリーンです。どんな助けも大歓迎です。

function createMap(lat, lng, zoomVal) {
 var mapOptions = { center: new google.maps.LatLng(lat, lng),    
 zoom: zoomVal,   
 scrollwheel: false,  
 mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);


var myLatlnglow = new google.maps.LatLng(23.654332,-79.387867);

var markerlow1 = new google.maps.Marker({
    position: myLatlnglow,
    icon: 'images/map-dot.png',
    map: map,
    url: '#',
    title: 'Name'
});
google.maps.event.addListener(markerlow1, 'click', function() {
window.location.href = markerlow1.url;
});


var myLatlnglow = new google.maps.LatLng(23.688458,-79.300619);

var markerlow = new google.maps.Marker({
    position: myLatlnglow,
    icon: 'images/map-dot.png',
    map: map,
    url: '#',
    title: 'Name'
});
google.maps.event.addListener(markerlow, 'click', function() {
window.location.href = markerlow.url;
});


}

var map;
function initialize() { 
 createMap(23.668493, -29.410812,12);
  if(navigator.geolocation) {  
  success = function(position) {    
 createMap(position.coords.latitude, position.coords.longitude,13);  
};   
error = function() {
 createMap(23.648493, -29.410812,12); 
}    
 navigator.geolocation.getCurrentPosition(success, error);  
} 
}
4

1 に答える 1

0

もし私があなたなら、読みやすくするためにオブジェクトのオブジェクトを作成します。効率が必要で、スペースと入力を節約したい場合は、オブジェクトを配列に置き換え、インデックス(0,1,2 ...)でデータをアドレス指定します。

これがデモです

    // inside function createMap(...)
      ...
    markerData = {
        bing: {
            lat: 23.654332,
            lng: -79.387867,
            icon: "http://labs.google.com/ridefinder/images/mm_20_red.png",
            url: "http://www.bing.com/",
            title: "some search engine"
        },
        yahoo: {
            lat: 23.688458,
            lng: -79.300619,
            icon: "http://labs.google.com/ridefinder/images/mm_20_blue.png",
            url: "http://www.yahoo.com/",
            title: "Great free games"
        }
    };

    for (markerId in markerData) {
        markers[markerId] = createMarker(markerData[markerId]);
    }

    markers['bing'].setTitle("new title");
}

function createMarker(data) {
    var myLatLng = new google.maps.LatLng(data.lat, data.lng);

    var marker = new google.maps.Marker({
        position: myLatLng,
        icon: data.icon,
        map: map,
        title: data.title
    });
    google.maps.event.addListener(marker, 'click', function() {
        window.location.href = data.url;
    });

    return marker;
}

後で作成したマーカーへの参照を保存することも役立つはずです。私はグローバルオブジェクトmarkersと同じIDを使用しています。

var map;
var markers = {};

後でマーカープロパティを変更する必要がある場合は、からアクセスできますmarkers

   markers['bing'].setTitle("new title");
于 2012-07-14T23:37:33.237 に答える