Javascript 没有重复我自己,智能循环对象

Javascript 没有重复我自己,智能循环对象,javascript,jquery,google-maps-api-3,Javascript,Jquery,Google Maps Api 3,以下是我在同一个页面上创建的多个地图 我几乎一直在“重复”我自己,因为这种方式对我自己来说更容易阅读,我的JavaScript技能只是比一个仍在学习的初学者好一点 我知道我可以创建一个像 var maps ={ ['latlng', 48.89376,2.33742], ['latlng1', 40.73717,-73.9], ['latlng2', -8.79069, 115.15927], } 让生活更轻松。但是我不知道如何使物体工作 这是我的密码 function

以下是我在同一个页面上创建的多个地图

我几乎一直在“重复”我自己,因为这种方式对我自己来说更容易阅读,我的JavaScript技能只是比一个仍在学习的初学者好一点

我知道我可以创建一个像

var maps ={
    ['latlng', 48.89376,2.33742],
    ['latlng1', 40.73717,-73.9],
    ['latlng2', -8.79069, 115.15927],
}
让生活更轻松。但是我不知道如何使物体工作

这是我的密码

function initialize() {
        var latlng = new google.maps.LatLng(48.89376,2.33742); //1 location
        var latlng1 = new google.maps.LatLng(40.73717,-73.98439); //2 location
        var latlng2 = new google.maps.LatLng(-8.79069, 115.15927); //3 location

        var settings = {
            zoom: 15,
            center: latlng,
            disableDefaultUI: true,
            zoomControl: true,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
         var settings1 = {
            zoom: 15,
            center: latlng1,
            disableDefaultUI: true,
            zoomControl: true,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

       var settings2 = {
            zoom: 15,
            center: latlng2,
            disableDefaultUI: true,
            zoomControl: true,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

        var map = new google.maps.Map(document.getElementById("map"), settings);
        var map1 = new google.maps.Map(document.getElementById("map1"), settings1);
        var map2 = new google.maps.Map(document.getElementById("map2"), settings2);

        var marker=new google.maps.Marker({
              position:latlng,
              });
         marker.setMap(map);

         var marker1 =  new google.maps.Marker({
              position:latlng1,
              });
         marker1.setMap(map1);

        var marker2 =  new google.maps.Marker({
              position:latlng2,
              });
         marker2.setMap(map2);
    }


google.maps.event.addDomListener(window, 'load', initialize);
如果有人能帮助我用对象和方法改进它,那么将来添加更多地图或更改
latlng
会更容易。非常感谢

试试看

function setup(el, lat, lng){
    var latlng = new google.maps.LatLng(lat, lng); //1 location
    var settings = {
        zoom: 15,
        center: latlng,
        disableDefaultUI: true,
        zoomControl: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = new google.maps.Map(document.getElementById(el), settings);

    var marker=new google.maps.Marker({
        position:latlng,
    });
    marker.setMap(map);

    return marker;
}

function initialize() {
    setup('map', 48.89376, 2.33742)
    setup('map1', 40.73717, -73.98439)
    setup('map2', -8.79069, 115.15927)
}


google.maps.event.addDomListener(window, 'load', initialize);

演示:

我在初始化功能中做了所有的事情,但是你可以很容易地将它们分开来包装不同的google地图功能(即设置标记、显示地图等)

功能图(横向、纵向、纵向){
this.latlng=新的google.maps.latlng(lat,long);
this.div=div;
this.marker=new google.maps.marker({
职位:本公司,
});
此参数。设置={
缩放:15,
中心:这个,拉丁,
disableDefaultUI:true,
动物控制:对,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
this.map=new google.maps.map(document.getElementById(this.div)、this.settings);
this.marker.setMap(this.map);
}
函数初始化(){
var latlng=[{lat:48.89376,lng:2.33742,div:'Fred'},
{lat:40.73717,lng:-73.98439,div:'George'},
{lat:-8.79069,lng:115.15927,div:'Betty'}],
myMap=[];

对于(i=0;i@olo如果以后需要对这些
标记
对象执行一些操作,可以考虑使用类和objects@olo代码重构的第一部分是找出常见任务——变量部分……然后将变量部分作为参数传递给执行常见任务的函数tasks@olo初始化函数应该是
function initialize(){for(i=0;i
@olo或this
函数initialize(){for(i=0;i
@olo阅读了非常感谢的答案。我正在从中学习。但是这种方法不适用于
div
ID不是
map
map1
map2
。ID是唯一的名称,如
娱乐
餐厅
训练
。更改很简单。将div名称添加到数组中,然后通过whate随便你。
function Map(lat,long,div) {

    this.latlng = new google.maps.LatLng(lat,long);
    this.div = div;
    this.marker = new google.maps.Marker({
                      position:this.latlng,
                  });
    this.settings =  {
        zoom: 15,
        center: this.latlng,
        disableDefaultUI: true,
        zoomControl: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    this.map = new google.maps.Map(document.getElementById(this.div), this.settings);
    this.marker.setMap(this.map);

}



function initialize() {
    var latlng = [{lat:48.89376,lng:2.33742,div: 'Fred'},
             {lat:40.73717,lng:-73.98439,div:'George'},
             {lat:-8.79069,lng:115.15927,div:'Betty'}],
        myMap = [];
    for(i=0;i<latlng.length;i++) {
        myMap.push(new Map(latlng[i].lat,latlng[i].lng,latlng[i].div));
    }           
}


google.maps.event.addDomListener(window, 'load', initialize);