1

我有要求使用绘图库在Google地图中使用多边形定义特定区域内的某些区域。在谷歌地图中设置多边形的显示顺序

我几乎有框架,但我注意到有时我的多边形的顺序不是我所期望的。

对于我的第一个多边形,我使用了999999999的zIndex属性,并减少了该值,因为绘制了更多的多边形,想法是第一个区域是最小的,其他区域从这个区域中排除 - 并且使用此设置,更小的多边形应该仍然可以选择。

我的问题是,这个工程的某个时候,但随后draing一些较大的更远区域使其覆盖在我的其他多边形的顶部,尽管具有较低zIndex的值

任何人都可以看到我要去哪里错了,或者如果还有另一种方法可以做到这一点,因为zIndex并不总是适用。

下面有一个样品sahpe初始化

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) { 
       zVal = zVal-1000000; 
      if (e.type != google.maps.drawing.OverlayType.MARKER) { 
      // Switch back to non-drawing mode after drawing a shape. 
      drawingManager.setDrawingMode(null); 


      // Add an event listener that selects the newly-drawn shape when the user 
      // mouses down on it. 
      var newShape = e.overlay; 

      //Check to see if the shape has an id if not alert user to pick a zone 
      newShape.type = e.type; 
      newShape.id=curID; 
      newShape.zIndex=zVal; 
      $('#'+curID).attr("disabled", true); 
      google.maps.event.addListener(newShape, 'click', function() { 
      if(this.id =="" || this.id==null){ 
      alert('no id'); 
      } 
       setSelection(newShape); 
      }); 
      setSelection(newShape); 
      clearSelection(); 
      } 
     }); 

赫雷什尽管具有较高zIndex的

enter image description here

+0

怎么样通过多边形维度更改z-index? – wf9a5m75

回答

4

的问题是如何在较小的区域为区域1,在这种情况下其不可选择的PIC你设置zIndex:

newShape.zIndex=zVal; 

多边形不是HTMLElements,zIndex不是CSS属性,它只是一个属性,用于告知API应该呈现多边形的顺序。

多边形将被渲染为<canvas/>中的对象,CSS可能不会用于这些对象,它只是在绘制对象时很重要。

为了能够以正确的顺序绘制多边形,API需要知道多边形的zIndex属性何时更改(然后API必须重新计算所有多边形的顺序并重新绘制它们)。

但是,当您按照这种方式设置zIndex属性时,API将无法实现更改。

解决方案: 使用MVCObject的setter方法的方法来设置zIndex的:

newShape.set('zIndex',zVal); 

的API现在将自动收到该属性更改和设置多边形的顺序

+0

谢谢@ Dr.Molle - 不知道我是如何忽视这一点的,但是谢谢你的回答,似乎正在完美 – JazziJeff