var losParams = new LineOfSightParams();
losParams.ObserverPoint = observerPoint;
losParams.TargetPoint = targetPoint;
// add offsets if appropriate
// losParams.ObserverHeightOffset = observerOffset;
// losParams.TargetHeightOffset = targerOffset;
// set output spatial reference
losParams.OutputSpatialReference = MapView.Active.Map.SpatialReference;
LineOfSightResult results = null;
try
{
if (tinLayer.CanGetLineOfSight(losParams))
results = tinLayer.GetLineOfSight(losParams);
}
catch (Exception ex)
{
// log exception message
}
if (results != null)
{
bool targetIsVisibleFromObserverPoint = results.IsTargetVisibleFromObserverPoint;
bool targetVisibleFromVisibleLine = results.IsTargetVisibleFromVisibleLine;
bool targetVisibleFromInVisibleLine = results.IsTargetVisibleFromInvisibleLine;
if (results.VisibleLine != null)
MapView.Active.AddOverlay(results.VisibleLine, visibleLineSymbol.MakeSymbolReference());
if (results.InvisibleLine != null)
MapView.Active.AddOverlay(results.VisibleLine, invisibleLineSymbol.MakeSymbolReference());
if (results.ObstructionPoint != null)
MapView.Active.AddOverlay(results.ObstructionPoint, obstructionPointSymbol.MakeSymbolReference());
}