Javascript 没有重复我自己,智能循环对象
以下是我在同一个页面上创建的多个地图 我几乎一直在“重复”我自己,因为这种方式对我自己来说更容易阅读,我的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
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);