ThinkGeo.com    |     Documentation    |     Premium Support

How to find that we are at which zoom level

Hello,


I am adding a point in a Google Map and want to know at which zoomlevel the point is added. So that point should get visible at that zoomlevel only. I also want to know that how to store the information about the added point in SQL Server or in XML file so that  the point can be ploted everytime the application starts.


Waiting for the reply.


Thanks,


Akku



Akku,


Thanks for your post,


Actually, we can find out the zoomlevel which the added point  in, please see the following code:


RectangleShape pointShapeExtent = AddedPointShape.Buffer(100, GeographyUnit.DecimalDegree, DistanceUnit.Kilometer).GetBoundingBox();
GoogleMapZoomLevelSet set = new GoogleMapZoomLevelSet();
double snappedScale = set.GetZoomLevel(currentExtent, winformsMap1.Width, mapUnit).Scale;


According to the code above we can find out the scale value for the added point and determine which zoomlevel is the added point in.


Also about your another question, if you want to store the information about the added point, I suggest to use the XML file to store the point information, you just need to store the longitude and latitude information of each point, when the map load you can read the XML file and get the longitude and latitude for these added points, then construct these PointShape object and added them to the map. When you add these points to the map, you can use the InMemoryFeatureLayer to load them, here is the code for loading a point shape through the InMemoryFeatureLayer below:




PointShape point = new PointShape(longitude, latitude);
Feature feature = new Feature(point);
InMemoryFeatureLayer inMemoryLayer = new InMemoryFeatureLayer();
inMemoryLayer.InternalFeatures.Add("Point", feature);
LayerOverlay staticOverlay = new LayerOverlay();
staticOverlay.Layers.Add("InMemoryFeatureLayer", inMemoryLayer);


If you stil have any other questions please let us know,


Thanks,


Scott,