ThinkGeo.com    |     Documentation    |     Premium Support

VB samples using more than 1 custom style?

Are there any VB samples using more than 1 custom style?


I changed my ship layer to a custom style so I could retate the ships based on heading. But now I find I can't use the labels I was using because I cannot have default style mixed with custom styles. So, I am presuming I need custom text style to go with my custom rotated point style.


However, I am having trouble figuring out how to do that - whether I need to add a new vb file (CustomTextStyle.vb) to go with my current RotatedPointStyle.vb or whether I can put all the cloasses inside 1 file, etc. A VB sample would make things a lot clearer. Can anyone point me towards one?


Thanks,


Dave



David, 



Thanks for your post, actually we have a VB sample that meets your requirement, you can reference it directly, the sample name is "DrawUsingFleeBooleanStyle.vb", it is in the "Extending MapSuite" folder. So in the Load event you can focus on the citiesLayer that it adds tw custom styles, one is the zedGraphStyle, another is its text style. 



So please check the sample first if you still have any other questions please let us know, 



Thanks, 



Scott,



Ah, guess you mean DrawUsingZedGraphStyle.vb - I will see if that helps me.  
  
 Thanks, 
  
 Dave

David,


Thanks for your post.
 
I think both the two samples use the customized style, following are the code snippet used there.

ZedGraphStyle zedGraphStyle = new ZedGraphStyle();
zedGraphStyle.ZedGraphDrawing += new EventHandler<ZedGraphDrawingEventArgs>(zedGraphStyle_ZedGraphDrawing);
 
zedGraphStyle.RequiredColumnNames.Add("WHITE");
zedGraphStyle.RequiredColumnNames.Add("ASIAN");
zedGraphStyle.RequiredColumnNames.Add("AREANAME");
 
TextStyle textStyle = TextStyles.CreateSimpleTextStyle("AREANAME", "Arial", 12, DrawingFontStyles.Regular, GeoColor.StandardColors.Black, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green), 2, 0, -8);
citiesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(zedGraphStyle);
citiesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(textStyle);
citiesLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
 
 
 
string expression = "(ToInt32(POP_CNTRY)>10000000) AND (ToChar(LANDLOCKED)='Y')";
FleeBooleanStyle landLockedCountryStyle = new FleeBooleanStyle(expression);
 
// You can access the static methods on these types. We use this
// to access the Convert.Toxxx methods to convert variable types
landLockedCountryStyle.StaticTypes.Add(typeof(System.Convert));
// The math class might be handy to include but in this sample we do not use it
//landLockedCountryStyle.StaticTypes.Add(typeof(System.Math));
 
landLockedCountryStyle.ColumnVariables.Add("POP_CNTRY");
landLockedCountryStyle.ColumnVariables.Add("LANDLOCKED");
 
landLockedCountryStyle.CustomTrueStyles.Add(new AreaStyle(new GeoPen(GeoColor.SimpleColors.Green, 2), new GeoSolidBrush(GeoColor.FromArgb(100, GeoColor.SimpleColors.Green))));
landLockedCountryStyle.CustomFalseStyles.Add(AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green)));

 
Any more questions please feel free to let me know.
 
Thanks.
 
Yale

True, but I don’t think the FleeBooleanStyle example has citiesLayer which you mentioned in your post (and which is of main interest to me as I am also doing point styles). 
  
 I now have triangular custom rotated vessels with customs labels using this code: 
  
 Dim rotatedpointStyle As New RotatedPointStyle(PointStyles.CreateSimpleTriangleStyle(GeoColor.SimpleColors.Red, 15, GeoColor.SimpleColors.Black), “VCMG”, 1)
Dim textStyle As TextStyle = TextStyles.CreateSimpleTextStyle(“Name”, “Arial”, 10, DrawingFontStyles.Regular, GeoColor.StandardColors.Black, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green), 2, 0, -8)

ShipLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Clear()
ShipLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(rotatedpointStyle)
ShipLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(textStyle)
  
  
 That works very nicely. However, the CreateSimpleTriangleStyle output doesn’t give a clear indication of direction, given that the triangles are equilateral. So, I am trying to change that to a custom rotating icon. I see a posting here: 
  
 gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/21/aft/5854/afv/topic/Default.aspx#10085 
  
 which is talking about “use a PNG fie with transparent pixels as a custom point style image” which is exactly what I want to do, but the code in that topic appears to be for default point style, not custom point style. How do I get a custom bitmap that I can rotate? It must be something like this (but this is wrong!): 
  
 Dim rotatedpointstyle As New RotatedPointStyle(PointStyles.CreateSimplePointStyle(PointType.Bitmap.Image = New GeoImage(“MyIcon.png”)) 
  
  
 Thanks, 
  
 Dave

 I would suggest you check out the Code Community sample Rotated Image Style in the "Vehicle Tracking" category. In this sample, it is using an icon for a vehicle but this is basically the same idea as for your case. wiki.thinkgeo.com/wiki/Map_Suite_De...mage_Style


Also, in the category "Styles" , you are going to find a lot of examples of how to create your own style and get inspired from them. wiki.thinkgeo.com/wiki/Map_Suite_De...es_Samples



I am not sure if I am the only one using VB out of all your customers, but I am afraid these samples are just a really horrible way of having to work with your application. Here are the steps I have to take: 
  
 a) Download the sample zip file. 
 b) Unzip the zip file. 
 c) Double click on the .sln - error - “.csproj not supported by this version of the application” (I run the latest VS2010). 
 d) Open VS2010 then File/Open Project - RotatedImageStyle.sln 
 e) Run the Visual Studio Conversion Wizard 
 f) Warning 1 The referenced component ‘MapSuiteCore’ could not be found. Fix that by re-referencing to MapSuiteCore 4.5.0.0 
 g) No errors - Run 
 h) “There were build errors”: 
 “Error 1 The type ‘System.Collections.Specialized.INotifyCollectionChanged’ is defined in an assembly that is not referenced. You must add a reference to assembly ‘WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’. C:\Users\User\Documents\Visual Studio 2010\Projects\ThinkGeo Examples\VC\ServicesEditionSample_RotatedImageStyle_CS_090728\RotatedImageStyle\TestForm.cs 38 13 RotatedImageStyle” 
 i) Add reference to WindowsBase.dll 
 j) Run again - works. 
 k) It’s all in C# which I am not very good at. Convert: 
 RotatedImageStyle rotatedImageStyle = new RotatedImageStyle(new GeoImage(@"…\Data\vehicle2.png"), “Angle”); 
 to VB using developerfusion.com/tools/convert/csharp-to-vb/ 
 Dim rotatedImageStyle As New RotatedImageStyle(New GeoImage("…\Data\vehicle2.png"), “Angle”) 
 l) Run the C# class code through the converter to VB and paste into new class - fix a few errors 
 m) Remove “Namespace RotatedImageStyle” and “End Namespace” and change “Class RotatedImageStyle” to “Public Class RotatedImageStyle” 
  
 Being up against different languages, different versions & missing files (yes, I know they were removed to save space) is not productive at all, not to mention that if you support VB.Net I shouldn’t be having to get involved with C# at all. What you REALLY need is a decent manual - online version would be fine. Your API documentation needs to be fleshed out to include full descriptions and small samples. I will attach a sample of how one of your competitors provides Help that makes it very simple to get going on my own coding rather than spending more time fudging examples that never work straight off. Or you could provide working samples both in VB & C# and probably also in all the VS versions you do support.


This is an example of a decent amount of help. I would hope that ThinkGeo would be working towards something more than a bunch of C# examples that often cause more problems than they solve. I hope this can be seen as constructive feedback.


Dave



Dave,


I'm sorry for the inconvenient, I made the Rotate image sample for VB.NET, please get the the attachment, you just need to re-reference the MapSuiteCore.dll to the project and run it.


In addition, thanks for your feedback for our products, it is really useful for us and we have got it and added it to our next plan so that all of our customer can utilize our products better in the future,


Thanks,


Scott,

 



RotatedImageStyle_VB.zip (32.5 KB)

Actually I managed to get it going a couple of hours ago - below is a partial screen dump.



I will certainly look at the code though & see if it can offer any improvements to my code.


Thanks,


Dave



David, 
  
 You are welcome and if there are any more questions please let us know, 
  
 Thanks, 
  
 Scott,