如何消除Javascript中的重复行
How to rid repeating lines in Javascript?
本文关键字:何消 Javascript 更新时间:2023-09-26
我有一个Javascript文件,它将标记添加到自定义谷歌地图,这是我的代码:
var locations = [
// Bloor Station
new google.maps.Marker({
position: new google.maps.LatLng(43.670231, -79.386821),
url: "http://www.youtube.com/watch?v=NX7QNWEGcNI",
map: map,
icon: image
}),
// Castle Frank Bridge
new google.maps.Marker({
position: new google.maps.LatLng(43.674759, -79.366643),
url: "http://www.youtube.com/watch?v=NX7QNWEGcNI",
map: map,
icon: image
}),
// Simeon Park
new google.maps.Marker({
position: new google.maps.LatLng(43.792333395471275, -79.38898265361786),
url: "http://www.youtube.com/watch?v=NX7QNWEGcNI",
map: map,
icon: image
}),
对于每个位置,它都像这样继续。
我的问题是,我使用相同的地图和图像为每个标记;此外,我还想添加其他变量到所有位置,而不必为每个标记写同一行;随着位置的增加,重复的行也会增加,这可能会很麻烦。
总之,我的问题是:我如何使它能够摆脱这些重复的行?
我试图运行一个for循环来初始化每个声明URL和每个位置后,但这不起作用。
您可以创建一个辅助函数来创建一个新的Marker对象,为其赋值,然后将其推入locations数组。
的例子:
var locations = [];
function addMarker(lat, long, url) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, long),
url: url,
map: map,
icon: image
});
locations.push(marker);
}
然后调用addMarker来添加新的标记
addMarker(43.792333395471275, -79.38898265361786, "url");
函数呢?
var createLocationMarker = function(lat, lng, ytId) {
return new google.maps.Marker({
position: new google.maps.LatLng(lat, lng),
url: "http://www.youtube.com/watch?v=" + ytId,
map: map,
icon: image
})
};
var createLocations = function(locations) {
var markers = [];
for (var i = locations.length; i > 0; --i) {
var l = locations[i];
markers.push(createLocationMarker(l.lat, l.lng, l.yt));
}
return markers;
};
// static declaration, or result of an ajax request:
var locations = [
{ lat: 43.670231, lng: -79.386821, yt: 'NX7QNWEGcNI' }, // Bloor Station
{ lat: 43.674759, lng: -79.366643, yt: 'NX7QNWEGcNI' }, // Castle Frank Bridge
{ } // ...
];
var markers = createLocations(locations);
我没有使用过谷歌地图但是看看这个,你可以这样做:
var locations = [];
function addLocations(){
//NB I just copied the first value to save time, you'll need to swap the second
//and third out for the values you need:
//Positions
var posits = [
{lat: 43.670231, lon: -79.386821},
{lat: 43.670231, lon: -79.386821},
{lat: 43.670231, lon: -79.386821}
];
//URLs
var urls = [
"http://www.youtube.com/watch?v=NX7QNWEGcNI",
"http://www.youtube.com/watch?v=NX7QNWEGcNI",
"http://www.youtube.com/watch?v=NX7QNWEGcNI"
];
//Now, use a loop to create the locations:
for(var i = 0; i < 3; i++){
//Place in array using values in arrays above:
locations[i] = new google.maps.Marker({
position: new google.maps.LatLng(posits[i].lat, posits[i].lon),
url: urls[i],
map: map,
icon: image
});
}
}
//Invoke function when desired
addLocations();
如果你在函数中保留位置/url的数组,它们将在使用后从内存中删除,如果你需要再次引用它们,你可以使它们成为全局的,但除非你必须这样做,我不会-我假设数据可以在之后从位置数组中的对象中引用。
也-没有理由为什么url不能在对象中存储晚/长数据,另一个答案是这样的,我写出来是为了可读性,但这真的是个人的选择
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- Javascript获取元素背景图像,但消除了“;url()”;
- Javascript对象:这两个值有何不同
- Sencha Touch 2 它与我对 html5/javascript Web 开发的知识有何关系
- 在 JavaScript 中命名匿名函数有何不同
- 在JavaScript中的类中,push和concat的工作方式有何不同
- JavaScript函数对象与Scala函数对象有何不同
- RegEx在VBA和JavaScript中的处理方式有何不同?
- 基于javascript的网站有何不同?
- 在 JavaScript 中使用重排隐藏元素,它与 CSS 隐藏属性有何不同