我想限制用户创建2个以上多边形和1个以上路径的能力。我可以通过编程方式添加或删除特定的绘图工具,但我似乎无法找到任何文档是计算地图上存在的折线或多边形的数量。
以下是一些用于演示预期用途的伪代码:
If exists > 2 polygons and exists < 2 polylines then
disable polygon drawing tool
else if exists < 3 polygons and exists > 1 polylines then
disable polyline drawing tool
else if exists > 2 polygons and exists > 1 polylines then
disable entire drawing tool
end if
同样,我的问题专门用于计算地图上的多边形和折线。 Google API是否具备此功能?
答案 0 :(得分:2)
首先:你的if-elseif比需要的更复杂。如果限制最多为1个折线,最多为2个多边形
if (n == 2) {
//switch off polygon drawing tool
}
if (m == 1) {
//switch off polyline drawing tool
}
if (n == 2 and m == 1) {
//switch off drawing tool
}
其中
n
是多边形的数量,m
是折线的计数,换句话说,关闭折线绘图与多少个多边形无关,反之亦然。
跟踪n
和m
...
可能最好创建一个对象 - 让它称之为cf
- 和push
每个用户创建的对象(如果用户创建的对象是你想要的对象类型如果cf
的长度超过您想要施加的限制,则关闭绘图工具。
所以
var cf=[];
/* stuff to draw things on the map, resulting in a new object called kk */
cf.push(kk);
if (cf.length>3){
// switch off the drawing tool
}
由于您想根据创建的对象是折线还是多边形施加不同的限制,请创建2个对象(例如cf1
和cf2
)并将kk推送到cf1
如果它是多边形,并且cf2
如果它是折线...并更改if语句以反映不同的测试。
为什么不迭代计数器而不是创建对象?
我假设有一个指向绘制多边形和折线的点,并且您想要使用/保存/导出它们。
根据我已经概述的方法,cf1
和cf2
可以包含有关每个多边形的所有内容,而不仅仅是它们的几何图形 - 生成它们的用户,有关它们的摘要信息以及所有您可能想要存储/导出/显示的其他内容。
如果不需要,那么计数器就可以正常工作。
使用cf.length
的inb4 &#39; 在JS世界中是非常规的&#39;。太糟糕了。它起作用(除了在这里不适用的角落情况)以及它的简约。