我正在创建地图标记,我想为地图上的每个县分配不同的颜色.
我事先并不知道地图上会显示多少县,所以我需要想办法分配无限数量的颜色.
目前,我正在使用以下代码为每个县分配一种颜色,但是当我pop()
列表太多次时,我遇到了一个问题:
var colours = ['6183A6', '3A66A7', '3B4990', '5B59BA'];
var h_colours = []; // associative array
function addMarker(county, colour) {
if (colour==undefined) {
if (h_colours[hundred]==undefined) {
h_colours[hundred] = colours.pop();
} } }
Run Code Online (Sandbox Code Playgroud)
有没有办法可以循环浏览列表而不实际删除项目,并在我到达结尾时从列表的开头继续?
谢谢!
是.
var getNextColour = (function() {
var colours = ['6183A6', '3A66A7', '3B4990', '5B59BA'];
var cc = 0;
return function() {
var rv = colours[cc];
cc = (cc + 1) % colours.length;
return rv;
};
})();
Run Code Online (Sandbox Code Playgroud)
现在你可以说:
if (colour == undefined) colour = getNextColour();
Run Code Online (Sandbox Code Playgroud)
或者干脆
colour = colour || getNextColour();
Run Code Online (Sandbox Code Playgroud)
当然,将颜色应用于地图的元素,使得不对具有相同颜色的相邻区域着色是一个相当有趣的问题.
归档时间: |
|
查看次数: |
1760 次 |
最近记录: |