ThinkGeo.com    |     Documentation    |     Premium Support

Marker.XOffset /Marker.YOffset

Can you tell me what these properties are suppose to do?


I've created two different Marker Types on my map, 1 for Hospitals, 1 for Doctors.  So far everything works OK, (separate Icons, etc.) but when I display the map the Icon for the Hospital is typically overwritten by the Icon for the Doctors (as many doctors offices are at the same geographic location as the Hospital.  So I'd like to display the hospital Icons about 8-16 pixels away from the doctors so we can see both.


I tried using the XOffset/YOffset properties to accomplish this, but that doesn't seem to do what I thought it would do, so unless I've got it wrong, is there an easy way to set the point so that it displays about 8-16 pixels from its original location, and moves correctly when the map zooms in/out?


Thanks!!


bob



Bob, the X and Y offsets just indicate how far from the feature the symbol or label is applied.  We’ve had this issue with vehicle positions: if several vehicles are parked close to each other and the map is zoomed out a bit, they’re all stacked on top of each other (and the labels become a jumbed mess, too!).  People have complained, and I can only respond with “the cars are parked next to each other and the map is zoomed to 100,000 scale…what do you expect?”   We have not come up with a solution for this other than, perhaps, to write some code to determine if points are close to others and shift them a little, but I don’t know if that’s an acceptable or pratical solution.  The other idea we’ve had is to use some sort of clustering and, instead of plotting points for one hospital and five doctors all within, say 100 feet, replace it with one point labeled “Hospital and 5 doctors” or something like that.  And we’ve only considered these issues with a single entity, not like in your case where you have hospitals and doctors…imagine it would be even worse if there were nurses. 
  
 Allen

Hi Bob and Allen,


You might take a look at our Cluster Point Style to see if this might help to combine some of your points and to 'clean up' the map a bit. A C# sample for Cluster Point Style can be found in our Wiki here: wiki.thinkgeo.com/wiki/Map_S...PointStyle



Ryan, 
  
 Yes I know about that…I just didn’t think it would work to combine two different types of items.  Showing “6” doesn’t tell 1 hospital and 5 doctors.  In our case, all we’d show is vehicles, so a count would obviously be a count of  vehicles.  Plus Bob didn’t say if the hospitals and doctors were in the same layer.  I kind of doubt Cluster Point Style would cover points in more than one layer.  Sounds pretty tricky.  But even if it reduced Bob’s stuff to one hospital point and one symbol of a cluster of 5 doctors (if they were in different layers) it would reduce the points symbolized from 6 to 2.  I guess it all depends on where the hospital point is placed if there is still some overlap of symbols. 
  
 Allen

Hi Allen,  
  
 I believe you are correct that for two seperate layers you would need a ClusterPointStyle for each. This is a bit of a tricky situation expecially if you need to show all of that information at a very large scale. I think the best option would be to give your users options. Perhaps a combination of ClusterPointStyles, zooming, and a control to turn on and off layers would allow them to see the data they want without the unwanted overlapping?

Yeah, it sounds a bit complicated with more than one layer, so I’m staying away from the idea.  That said, I’ll probably have to do it next week…

Here is the final (for now) solution I’ve decided upon:  I have a checkbox to disply physicians, and another one for hospitals…So this is like layering…and if they choose to display ONLY hospitals they can all be seen, then if they add back the physicians they can see which physicians overlap… 
  
 About the best for now since “moving” the icon a couple of pixels isn’t really an option right now as described above. 
  
 THANK YOU ALL FOR THE GREAT IDEAS!! 
  
 bob

Bob, 
  
   In thinking about this there is another solution that might work out really well.  You could create a new kind of layer that inherits from FeatureLayer and in this layer you could add a property which is a collection of layers.  The layers you would add to this collection would be the hospitals and doctors layers.  Inside this new layer you would override the GetFeaturesInBoundingBox and a few other key methods to basically do the following.  When the new layer is queried to be be drawn it actually queries all of the layers in the collection and aggregate the results.  It basically does a join of the two layers so the column values would include the ones from the doctors and hospitals.  In this way you could configure just one style for the combined layers and use a layered style to show one icon and also other layered styles to show the number of doctors or other information. Imagine one icon with some other ‘sections’ such as the number of doctors int he upper left of the icon and the hospitals rating in the bottom right area of the icon.  This can all be done easily once we union the data.  It may also be possible to make this work seamlessly with the cluster style or do some clustering in the new layer. If you are interested let me know and also if you could explain your data a little better we might be able to work up a simple sample to include in our code community.  If this is something you need quickly I think our professional services team could do this in just a few hours as another option.  If not it might be next week before I have a resource to look into this. 
  
 David