Thanks, i manage to get smoother performance using your suggestion....for those interested.. this is the updated algo using matrix to transform the envelope's MapPoint1(Xmin & Ymin) and MapPoint2(Xmax, Ymax)...
void targetMap_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
e.Handled = true;
if (this.targetMap == null) { return; }
if (this.targetMap.Extent == null) { return; }
if ((e.DeltaManipulation.Translation.X == 0) && (e.DeltaManipulation.Translation.Y == 0) && (e.DeltaManipulation.Scale.X == 1)) { return; }
Matrix transformationMatrix = new Matrix();
if ((e.DeltaManipulation.Translation.X != 0) || (e.DeltaManipulation.Translation.Y != 0))
{
transformationMatrix.Translate(-e.DeltaManipulation.Translation.X, -e.DeltaManipulation.Translation.Y);
}
if (!e.IsInertial)
{
if (e.DeltaManipulation.Scale.X != 1)
{
if (targetMap.TouchesCaptured.Count() > 1)
{
transformationMatrix.ScaleAt(1/e.DeltaManipulation.Scale.X, 1/e.DeltaManipulation.Scale.Y, e.ManipulationOrigin.X, e.ManipulationOrigin.Y);
}
}
}
Envelope en = this.targetMap.Extent;
Point screenTopLeft = this.targetMap.MapToScreen(new MapPoint(en.Extent.XMin, en.Extent.YMin));
Point screenBottomRight = this.targetMap.MapToScreen(new MapPoint(en.Extent.XMax, en.Extent.YMax));
Point newScreenTopLeft = transformationMatrix.Transform(screenTopLeft);
Point newScreenBottomRight = transformationMatrix.Transform(screenBottomRight);
MapPoint newMapTopLeft = this.targetMap.ScreenToMap(newScreenTopLeft);
MapPoint newMapBottomRight = this.targetMap.ScreenToMap(newScreenBottomRight);
this.targetMap.Extent = new Envelope(newMapTopLeft, newMapBottomRight);
}
if anyone wants is as a Map Behavior... email me and i will send it....and now for the 2nd issue with the GeoRssLayer.... suggestions please.....thanksEDIT: Just realize there is still sluggishness when a feature layer with hundreds of polyline is added... but it is still better than my previous implementation