ThinkGeo.com    |     Documentation    |     Premium Support

V12.1 - ZoomLevel Change Results in Pink Tiles

ThinkGeo Team,

The rendering of several of my layers results in the infamous ‘pink tile’. This appears due to changing styles based on ZoomLevel. Below are Drawing/Drawn Exceptions.

The following are when Styles are changed based on ZoomLevel for the Transportation Layer:
ZoomLevel01 to ZoomLevel14 – no Styles applied, layer not visible.
ZoomLevel15 ApplyUntil ZoomLevel15
ZoomLevel16 ApplyUntil ZoomLevel16
ZoomLevel17 ApplyUntil ZoomLevel20

Below you can see how the rendering changes based on ZoomLevel:
Beginning at ZoomLevel20
ZoomLevel20 - rendered properly
ZoomLevel19 - rendered improperly
ZoomLevel18 - rendered improperly
ZoomLevel17 - rendered properly
ZoomLevel16 - rendered properly
ZoomLevel15 - rendered improperly

This all works under V10.6, same code, same data, same ZoomLevels, same Styles.

Regards,
Dennis

Here are a few screen-captures:

ZoomLevel20–>>

ZoomLevel19–>>

ZoomLevel18–>>

ZoomLevel17–>>

ZoomLevel16–>>

ZoomLevel15–>>

The below occured when Zoom from ZoomLevel16 to ZoomLevel15–>>
2020-09-03 10:18:04,543 ERROR OriStarVision - OriStarVision->UnKnown.SqliteFeatureLayer_DrawingException:
LayerName=Transportation
Source=System.Private.CoreLib
TargetSite=Void ThrowArgumentOutOfRange_IndexException()
StackTrace= at System.Collections.Generic.List1.get_Item(Int32 index) at ThinkGeo.Core.PositionStyle.qj4=(MultilineShape multilineShape, RectangleShape screenExtent, Boolean allowLineLabelingMoving, Double rotateAngle) at ThinkGeo.Core.PositionStyle.mj4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle) at ThinkGeo.Core.PositionStyle.pD4=(LineShape lineShape, Double labelWidth, Double lineLength, String text, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle) at ThinkGeo.Core.PositionStyle.oz4=(LineShape lineShape, Double labelWidth, Double lineLength, String text, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle) at ThinkGeo.Core.PositionStyle.oj4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle) at ThinkGeo.Core.PositionStyle.tD4=(LineShape line, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle) at ThinkGeo.Core.PositionStyle.sD4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle) at ThinkGeo.Core.PositionStyle.GetLabelingCandidateCore(Feature feature, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle) at ThinkGeo.Core.PositionStyle.GetLabelingCandidates(Feature feature, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle) at ThinkGeo.Core.PositionStyle.DrawText(Feature feature, GeoCanvas canvas, GeoFont font, GeoBrush textBrush, GeoPen haloPen, DrawingLevel drawingLevel, Single xOffsetInPixel, Single yOffsetInPixel, DrawingTextAlignment alignment, Double rotationAngle, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers) at ThinkGeo.Core.PositionStyle.DrawCore(IEnumerable1 features, GeoCanvas canvas, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers)
at ThinkGeo.Core.ValueStyle.DrawCore(IEnumerable1 features, GeoCanvas canvas, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers) at ThinkGeo.Core.ZoomLevel.DrawCore(GeoCanvas canvas, IEnumerable1 features, Collection1 currentLayerLabels, Collection1 allLayerLabels)
at ThinkGeo.Core.ZoomLevel.Draw(GeoCanvas canvas, IEnumerable1 features, Collection1 currentLayerLabels, Collection1 allLayerLabels) at ThinkGeo.Core.FeatureLayer.DrawCore(GeoCanvas canvas, Collection1 labelsInAllLayers)
at ThinkGeo.Core.Layer.zR8=(GeoCanvas canvas, Collection1 labelsInAllLayers) Message=Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') 2020-09-03 10:18:04,544 ERROR OriStarVision - OriStarVision->MapOverlay.TheLayerOverlay_DrawingException: LayerOverlay=SQLite Source=System.Private.CoreLib TargetSite=Void ThrowArgumentOutOfRange_IndexException() StackTrace= at System.Collections.Generic.List1.get_Item(Int32 index)
at ThinkGeo.Core.PositionStyle.qj4=(MultilineShape multilineShape, RectangleShape screenExtent, Boolean allowLineLabelingMoving, Double rotateAngle)
at ThinkGeo.Core.PositionStyle.mj4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.pD4=(LineShape lineShape, Double labelWidth, Double lineLength, String text, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.oz4=(LineShape lineShape, Double labelWidth, Double lineLength, String text, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.oj4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.tD4=(LineShape line, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.sD4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.GetLabelingCandidateCore(Feature feature, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.GetLabelingCandidates(Feature feature, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.DrawText(Feature feature, GeoCanvas canvas, GeoFont font, GeoBrush textBrush, GeoPen haloPen, DrawingLevel drawingLevel, Single xOffsetInPixel, Single yOffsetInPixel, DrawingTextAlignment alignment, Double rotationAngle, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers)
at ThinkGeo.Core.PositionStyle.DrawCore(IEnumerable1 features, GeoCanvas canvas, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers) at ThinkGeo.Core.ValueStyle.DrawCore(IEnumerable1 features, GeoCanvas canvas, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers)
at ThinkGeo.Core.ZoomLevel.DrawCore(GeoCanvas canvas, IEnumerable1 features, Collection1 currentLayerLabels, Collection1 allLayerLabels) at ThinkGeo.Core.ZoomLevel.Draw(GeoCanvas canvas, IEnumerable1 features, Collection1 currentLayerLabels, Collection1 allLayerLabels)
at ThinkGeo.Core.FeatureLayer.DrawCore(GeoCanvas canvas, Collection1 labelsInAllLayers) at ThinkGeo.Core.Layer.zR8=(GeoCanvas canvas, Collection1 labelsInAllLayers)
Message=Index was out of range. Must be non-negative and less than the size of the collection. (Parameter ‘index’)
2020-09-03 10:18:04,544 ERROR OriStarVision - OriStarVision->MapOverlay.TheLayerOverlay_DrawingException:
LayerOverlay=SQLite
Source=System.Private.CoreLib
TargetSite=Void ThrowArgumentOutOfRange_IndexException()
StackTrace= at System.Collections.Generic.List1.get_Item(Int32 index) at ThinkGeo.Core.PositionStyle.qj4=(MultilineShape multilineShape, RectangleShape screenExtent, Boolean allowLineLabelingMoving, Double rotateAngle) at ThinkGeo.Core.PositionStyle.mj4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle) at ThinkGeo.Core.PositionStyle.pD4=(LineShape lineShape, Double labelWidth, Double lineLength, String text, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle) at ThinkGeo.Core.PositionStyle.oz4=(LineShape lineShape, Double labelWidth, Double lineLength, String text, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle) at ThinkGeo.Core.PositionStyle.oj4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle) at ThinkGeo.Core.PositionStyle.tD4=(LineShape line, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle) at ThinkGeo.Core.PositionStyle.sD4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle) at ThinkGeo.Core.PositionStyle.GetLabelingCandidateCore(Feature feature, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle) at ThinkGeo.Core.PositionStyle.GetLabelingCandidates(Feature feature, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle) at ThinkGeo.Core.PositionStyle.DrawText(Feature feature, GeoCanvas canvas, GeoFont font, GeoBrush textBrush, GeoPen haloPen, DrawingLevel drawingLevel, Single xOffsetInPixel, Single yOffsetInPixel, DrawingTextAlignment alignment, Double rotationAngle, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers) at ThinkGeo.Core.PositionStyle.DrawCore(IEnumerable1 features, GeoCanvas canvas, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers)
at ThinkGeo.Core.ValueStyle.DrawCore(IEnumerable1 features, GeoCanvas canvas, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers) at ThinkGeo.Core.ZoomLevel.DrawCore(GeoCanvas canvas, IEnumerable1 features, Collection1 currentLayerLabels, Collection1 allLayerLabels)
at ThinkGeo.Core.ZoomLevel.Draw(GeoCanvas canvas, IEnumerable1 features, Collection1 currentLayerLabels, Collection1 allLayerLabels) at ThinkGeo.Core.FeatureLayer.DrawCore(GeoCanvas canvas, Collection1 labelsInAllLayers)
at ThinkGeo.Core.Layer.zR8=(GeoCanvas canvas, Collection1 labelsInAllLayers) Message=Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') 2020-09-03 10:18:04,547 ERROR OriStarVision - OriStarVision->UnKnown.SqliteFeatureLayer_DrawnException: LayerName=Transportation Source=System.Private.CoreLib TargetSite=Void ThrowArgumentOutOfRange_IndexException() StackTrace= at System.Collections.Generic.List1.get_Item(Int32 index)
at ThinkGeo.Core.PositionStyle.qj4=(MultilineShape multilineShape, RectangleShape screenExtent, Boolean allowLineLabelingMoving, Double rotateAngle)
at ThinkGeo.Core.PositionStyle.mj4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.pD4=(LineShape lineShape, Double labelWidth, Double lineLength, String text, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.oz4=(LineShape lineShape, Double labelWidth, Double lineLength, String text, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.oj4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.tD4=(LineShape line, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.sD4=(MultilineShape multilineShape, String text, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, GeoCanvas canvas, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.GetLabelingCandidateCore(Feature feature, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.GetLabelingCandidates(Feature feature, GeoCanvas canvas, GeoFont font, Single xOffsetInPixel, Single yOffsetInPixel, Double rotationAngle)
at ThinkGeo.Core.PositionStyle.DrawText(Feature feature, GeoCanvas canvas, GeoFont font, GeoBrush textBrush, GeoPen haloPen, DrawingLevel drawingLevel, Single xOffsetInPixel, Single yOffsetInPixel, DrawingTextAlignment alignment, Double rotationAngle, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers)
at ThinkGeo.Core.PositionStyle.DrawCore(IEnumerable1 features, GeoCanvas canvas, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers) at ThinkGeo.Core.ValueStyle.DrawCore(IEnumerable1 features, GeoCanvas canvas, Collection1 labelsInThisLayer, Collection1 labelsInAllLayers)
at ThinkGeo.Core.ZoomLevel.DrawCore(GeoCanvas canvas, IEnumerable1 features, Collection1 currentLayerLabels, Collection1 allLayerLabels) at ThinkGeo.Core.ZoomLevel.Draw(GeoCanvas canvas, IEnumerable1 features, Collection1 currentLayerLabels, Collection1 allLayerLabels)
at ThinkGeo.Core.FeatureLayer.DrawCore(GeoCanvas canvas, Collection1 labelsInAllLayers) at ThinkGeo.Core.Layer.zR8=(GeoCanvas canvas, Collection1 labelsInAllLayers)
Message=Index was out of range. Must be non-negative and less than the size of the collection. (Parameter ‘index’)

ThinkGeo Team,

I’m not sure, but this issue may be caused by the same issue reported under:

I’m checking into it and will let you know what I find.

Dennis

ThinkGeo Team,

I believe that at least part of the issue with this post and my other one is that the below four MapView events have changed between MapSuite and Core. My application, and I’m sure others, have code that is dependent on these events and the Event Arguments that they provide.

_CurrentScaleChanging
_CurrentScaleChanged
_CurrentExtentChanging
_CurrentExtentChanged

I’d like to see these events and arguments the same as was under V10.6. Otherwise, a lot of people are going to have to make a lot of code changes. I’ve actually made the code changes for V12.1 and have issues.

Thanks,
Dennis

Thanks Dennis,
I still can not re-produce this one. I created a demo project for you to load the sqlite file. Could you modify the code to re-produce the issue. If this only happen on some specify sqlite data. Could you send it to the support@thinkgeo.com

Demo.zip (46.9 KB)

Thanks

Frank

Frank,

I just emailed a DropBox link to the SQLiteFeatureLayer data.

I’m also wondering is this is occurring because of the changes in the events for V12.1.

Dennis

Frank,

I took a look at your sample and see that it uses only one style. My application is much more involved in that it uses Styles based on ZoomLevel and column value.

My application changes ZoomLevel.CustomStyles based on current ZoomLevel when the ZoomLevel changes. The CustomStyles render line and label based on ColumnValue.

Dennis

Dennis,
We fixed the issue in V12.1 - ZoomLevel Change Results in Pink Tiles

The fix also applied to CurrentExtentChanging ,CurrentScaleChanging,CurrentExtentChanged CurrentScaleChanged.

Could you please get latest V12 beta package and try again.

Thanks

Frank

hi Frank,

I’ve upgraded to ThinkGeo.Core V13.0.0-beta164 and ThinkGeo.UI.Wpf V13.0.0-beta183.

This issue still persists.

Dennis

Frank,

I’m researching this more in-depth on my side to make sure this is not my issue. I’ll let you know.

Dennis

hi Frank,

After more research I’ve found that this issue is related to labels. Once labeling was removed the pink tiles are no longer rendered.

I’ll investigate labeling further and let you know what I find.

Dennis

Frank,

There is something going on with TextStyle, but I don’t know what exactly.

If my application sets any of the below TextStyle properties then the pink tiles appear. If I do not set any of them the pink tiles do not appear. The text labels appear, but only for ZoomLevel 17-20, it’s very odd.

The code I’m using is the same as under V10.6. Be aware that the code makes use of ValueStyle.

I’m not seeing how this is an application code issue.

Dennis

> GridSize				=10;
> SuppressPartialLabels	=true;
> TextPlacement			=Center;
> LabelOverlappingRule	=NoOverlapping;
> LabelDuplicateRule		=NoDuplicateLabels;
> BestPlacement			=0,0;
> DrawingLevel		       =LabelLevel;
> SplineType                =StandardSplining;
> LabelAllPolygonParts      =true;
> TextLineSegmentRatio      = 250;
> FittingLineInScreen       =true;

Frank,

I just sent a DropBox link to support@thinkgeo.com for a test application that demonstrates this issue.

Below are a few screen shots that show the error text being rendered.

Dennis

image

image

Thanks Dennis,
We have fixed this one. Could you please try with the latest beta version.

Thanks

Frank

hi Frank,

I’ve upgraded to ThinkGeo.Core V13.0.0-beta167 and ThinkGeo.UI.Wpf V13.0.0-beta186.

This issue is now resolved.

Thanks much to you and the developers!

Regards,
Dennis

Thanks Dennis,
Good to know it works. Go ahead let us know if you have any more questions.

Thanks

Frank