ThinkGeo.com    |     Documentation    |     Premium Support

Virtual Earth with Shape files







<object
classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui>

st1\:*{behavior:url(#ieooui) }






Hi Howard,


 


I have created new post here continuing from old post. (gis.thinkgeo.com/Support/Dis....aspx#9415)


 


Your last post sample works great and it highlights entire rectangle box area on hover. But I need to highlight lines and point inside that box with different color as below


  


I am working on prototype that requires showing and highlighting feature inside box.


I am using Virtual Earth background with multiple shape files of ‘Lines’ and ‘Point type’ only.


 


Attached are 3 screen shot images



        
  1. ‘Selected      Featurs inside Box’ - shows selected features right hand side in tree view      control

  2.     
  3. ‘Highlight      Featurs inside Box-1.PNG’ – I want point features to be highlighted in red      color as shown in image inside drawn box when I mouse hover ‘MANHOLE’ which is point type      beneath AccessPoints in tree view control

  4.     
  5. <u1:p>Similarly      I want entire line features to be highlighted in red color as shown in image inside      drawn box when I hover on ‘Dallas’ or ‘Richardson’ which is line type beneath ‘Fiber      Security’ in tree view control</u1:p>


<u1:p> </u1:p>


The points and images are drawn out of shape file. And they are drawn across <st1:country-region w:st="on"><st1:place w:st="on">USA</st1:place></st1:country-region>.


In some map area lines and point data are thick in amount resulting unseen point or line clearly, especially any downtown area. At this point user draws rectangle as shown in image to get more information about those area in tree view control.  


 


This entire navigation or selecting process requires dynamic approach to get attributes of point and lines features. How do I generate and highlight such features with different color inside box?


 


I hope this will help you to understand process of selecting features inside drawn box.


Also I would appreciate if you can send me sample that does above stuff dynamically.


 


<u1:p></u1:p>Thanks


Hiren


 



854-Selected_Featurs.PNG (27.1 KB)
855-Highlight_Featurs_inside_Box-1.PNG (27.1 KB)
856-Highlight_Featurs_inside_Box-2.PNG (27.3 KB)

Hiren,



I see your scenario; here is a sample for you to understand how to render features on the client side. The scenario is pretty good.



If you have more questions please let me know.



Thanks,

Howard



860-Post5953.zip (2.9 KB)
861-Post5953Data.zip (2.2 KB)









Hi Howard,


 


Thanks for solution.


I tried same solution with my shape file and little code change.


Some how it didn’t worked for me.


Please find attached screen shot and souirce code for your reference.


Am I missing anything here?


 


I’m using Map1.CustomOverlays to add line and point layers into it with VE back ground.


Your respoinse highly appreciated.


 


Thanks


Hiren




873-highlight_Featurs1.PNG (35.2 KB)
874-highlight_Featurs-Returns_nothing.PNG (40.5 KB)
875-HighlightFeaturs.zip (3.51 KB)

Hi Hiren,



The problem is the project property setting on the EditOverlay.FeatureSource. 



If the EditOverlay.FeatureSource has projection definition, it stores the shape as internal projection (EPSG: 4326) when you drawn a rectangle into the EditOverlay. So when you call feature.GetBoundingBox(), it returns a rectangle in EPSG:4326. While using Query tool, it automatically transforms features to Google’s projection then does the querying, so it returns features of Google’s projection. The rectangle which is EPSG: 4326 is pretty small while the features in the layer which is queried by the QueryTool is large. What’s why you cannot query anything.



Just remove the projection on the EditOverlay, I think it’ll be fine.//Map1.EditOverlay.FeatureSource.Projection = proj4ForShapes;


If you have any questions please let me know.



Thanks,

Howard














Hi Howard,


 


Thanks for update.


I have two different problems with browser.


 



        
  1. It      works fine with FireFox, query tools returns features and its value from      column


      But it didn’t highlight (color) when I hover it. Is this is something  JavaScript issue?


 



        
  1. It did      not worked in IE, until I put Map control inside update panel. When I draw      rectangle, query tool returns count for selected features and creates href      link below, but rectangle disappears. However it does highlight features on      mouse hovering.


 


In both browsers, drawn rectangle did not stay there.Please find attached screenshots for view in IE and FF.


 


Thanks


Hiren



877-Highlighted_Featurs_in_IE.PNG (92.1 KB)
878-Highlighted_Featurs_in_FF.PNG (88.4 KB)

Hi Hiren,



Please try this,



1, this issue comes from one error of code in JavaScript, please replace with the attached code.var shapeOverlay = null;
var currentFeature = null;
var styleRed = null;
var OnMapCreated = function(map){
    shapeOverlay = new OpenLayers.Layer.Vector({style:{fillColor:'red'}});
    map.addLayer(shapeOverlay);
    
    styleRed = {
        strokeColor: "red",
        strokeWidth: 1,
        strokeDashstyle: "solid",
        pointRadius: 6,
        fillColor: 'red'
    };
}

var linkOver = function(obj){
    if(shapeOverlay!=null){
        currentFeature = new OpenLayers.Format.WKT().read(obj.getAttribute('wkt'));
        currentFeature.style = styleRed;
        shapeOverlay.addFeatures([currentFeature]);
    }
};
var linkOut = function(){
    if(shapeOverlay && currentFeature){
        shapeOverlay.destroyFeatures([currentFeature]);
    }
};



2, IE cached your DOM tree so it doesn’t refresh, please refresh the overlay after adding the rectangle into the page:((LayerOverlay)Map1.CustomOverlays["OSPFM Layers"]).Redraw();


Any questions please let me know.



Thanks,

Howard











Hi Howard,


 


Continuing to earlier post,


I am able to highlight features of shp files to red color on the map (on top of VE) when user hover it on tree view node anchor value.


 


I have created and populated custom tree view for shp file based on different group. On page load I’m adding all attributes to child nodes for a shape file along with HTML anchor next to each child node header. This is required to highlight feature layer with red color on map. Please attached ‘‘zoom to selected feature-2.png’’


 


Every thing works fine, I could even zoom in to selected features based on their extent (point or line extent) when user clicks on child node header.


 


After zoomed in, it looses HTML anchor values as shown in ‘zoom to selected feature-3.png’.  For Ex, ‘HANDHOLE’ anchor value disappeared in Access point for one child node. Same thing happens to ‘Fiber Security’ category which is line type feature.


 


How do keep this value even after post back. I tried to store TreeView control in to view state which fires following error..


 


Sys.WebForms.PageRequestManagerServerErrorException: Error serializing value 'System.Web.UI.WebControls.Treeview'


 


Is there any easy way to get around this?


 


Please find attached images and code for your reference.





Thanks


Hiren




899-zoom_to_selected_feature-2.PNG (66.6 KB)
900-zoom_to_selected_feature-3.PNG (47.6 KB)
901-zoom_to_selected_featur.zip (5.04 KB)

Hiren,  
  
 One thing that TreeView is a control which cannot be serializable. 
  
 Also, when you do a postback, the client stuffs will be lost. So you need to do the same things which you did in the TrackShapeFinished. I recommend wrapping the code in the TrackShapeFinished to a method, and call it in both TrackShapeFinished and ZoomToClickEvent. In this way, you don’t need to save the TreeView States. 
  
 Any questions please let me know. 
  
 Thanks, 
 Howard 










Howard,


 


As per your suggestion, I converted code in TrackShapeFinished to LoadData() method, which I’m calling into TrackShapeFinished event and in TreeView1_SelectedNodeChanged event where it zooms to clicked feature.


 


As per my previous post dated (07-14-2009 07:10 PM), it sill looses HTML anchor value when I clicked on selected node to zoom in.


 


Any point out or what causing not to display HTML anchor value after post back?


 


Again find attached code, and please refer images from earlier post dated (07-14-2009 07:10 PM)


 


Thanks


Hiren




933-alpha.zip (6.07 KB)

Hiren,



I cannot recreate your issue without your data. I make a simple sample which is simple and similar as yours, please see if there are some difference.



Any questions please let me know.



Thanks,

Howard



948-DisplayASimpleMap.zip (2.49 KB)












Hi


 


I’m using Virtual Earth with .shp files. I am displaying 4 asp.net buttons (Road, Aerial, Hybrid & Birdseye). Clicking on Road, Aerial & Hybrid button changes VE mode and works fine.


 


But I have following issue with Birdseye view 


 


Birds Eye 


                - Button needs to be disabled when no Bird's eye is available. 


                - When in BE mode, panning the map messes up the display.


 


Thanks


Hiren



Hiren, 
  
 That’s a little difficult; because we don’t know what extent of VirtualEarth has BirdEye mode and what extent doesn’t. If it supports some API as I said; we can easily implement by the following method. 
  
 1, On the Server Side. 
 Map1.OnClientExtentChanged = “Map1ExtentChanged”; 
  
 2, On the Client Side. 
 var Map1ExtentChanged =      
       alert(Map1.GetOpenLayersMap().getExtent()); 
 } 
  
 Thanks, 
 Howard 













Howard,


 


I’m having another issue with Bird eye view when I switch between any other mode vs BirdEye. Attaches is screen shot


 


1. At street level, I can see bird eye view with some shape layers. (BirdEyeView.GIF)


2. I switch back to road/hybrid/aerial view and zoom little far from street. That works fine and shows more shape layers


3. At this point when I click to BirdEye view all layers are seen there as well which is not correct. (BirdEye-After.GIF)


 


Panning in BirdEye view mode crashes VS application. I had to kill my application from windows task manager.


 


Any idea what’s causing issuer here? Any fix for this?


Is there any way to control BirdEye view or any other way to disable when BirdEye it’s not available?


 


Thanks


Hiren



1017-BirdEyeView.GIF (91.5 KB)
1018-BirdEye-After.GIF (79.5 KB)

Hiren, 
  
 We don’t support Bird Eye directly; because it displays only in some specific extent and specific range of zoom levels. Its scale is different as our coordinates. For example you can turn on the bird eye on zoom level 16, do you think the scale is really the scale at the level 16? I’m sure it’s not. So I don’t think we can fix this issue. 
  
 I recreated BirdEye View crashes the VS; it throws “VEFloatIntegerMap: The number encoded is out of supported range” exception which is throws from VirtualEarth library. We cannot fix this issue currently. 
  
 As I mentioned above: to disable bird’s eye map when it’s not available, you need to know the rule from VirtualEarth. You and us can do some research on it or email this question to microsoft to see if there is any public API to do this. It’s the question for the 3rd part library which we cannot answer you clearly.  
  
 Birdeye View is a special view type which is supported by the 3rd part company and it’s not good integrated in our product. We don’t have any solution for this currently and I’ll let you know when I figure it out. Sorry for the inconvenience. 
  
 If you have more questions please let me know. 
  
 Thanks, 
 Howard