0

如何清理它以便代码更好地处理多个列表?我已经看到了一些从数组中提取标记信息的代码示例,但我似乎无法让它工作。

标记需要具有“icon:”、“url:”和“title:”属性。“图标:”以便我可以更改每个标记的外观,“url:”指向专用于每个标记的页面,“标题”只是在悬停时添加标记名称。

我还需要脚本中的数组,因为我不是从数据库或类似的东西中收集它。

当谈到 javascript 和 google maps 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 回答