<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How do you limit the map extent in ArcGIS Runtime .NET 100.2 in .NET Maps SDK Questions</title>
    <link>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199001#M2308</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Did you ever find a solution to this? I'm trying to do the same thing.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 22 Aug 2018 17:29:33 GMT</pubDate>
    <dc:creator>MarkCollins</dc:creator>
    <dc:date>2018-08-22T17:29:33Z</dc:date>
    <item>
      <title>How do you limit the map extent in ArcGIS Runtime .NET 100.2</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199000#M2307</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;How can you set the maximum extent for the MapView in the .NET runtime version 100.2?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've tried intercepting the OnViewPointChanged, but my viewpoint doesn't exactly match the bounds that I had set, I am assuming due to the zoom level scaling or something of that nature?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So then I tried on my setup,&amp;nbsp;&lt;/P&gt;&lt;P&gt;Snippet&lt;/P&gt;&lt;PRE style="color: gainsboro; background: #1e1e1e; font-size: 13;"&gt;&lt;SPAN style="color: #57a64a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;Set&amp;nbsp;the&amp;nbsp;current&amp;nbsp;viewpoint/extent&amp;nbsp;of&amp;nbsp;the&amp;nbsp;map&amp;nbsp;and&amp;nbsp;animate&amp;nbsp;to&amp;nbsp;it&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #569cd6;"&gt;await&lt;/SPAN&gt;&amp;nbsp;SetViewpointGeometryAsync(MapBounds)&lt;SPAN style="color: #b4b4b4;"&gt;.&lt;/SPAN&gt;ContinueWith((prevTask)&amp;nbsp;&lt;SPAN style="color: #b4b4b4;"&gt;=&amp;gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_viewPointBounds&amp;nbsp;&lt;SPAN style="color: #b4b4b4;"&gt;=&lt;/SPAN&gt;&amp;nbsp;GetCurrentViewpoint(&lt;SPAN style="color: #b8d7a3;"&gt;ViewpointType&lt;/SPAN&gt;&lt;SPAN style="color: #b4b4b4;"&gt;.&lt;/SPAN&gt;BoundingGeometry)&lt;SPAN style="color: #b4b4b4;"&gt;.&lt;/SPAN&gt;TargetGeometry; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_prevBounds&amp;nbsp;&lt;SPAN style="color: #b4b4b4;"&gt;=&lt;/SPAN&gt;&amp;nbsp;_viewPointBounds; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/PRE&gt;&lt;P&gt;and on my event handler:&lt;/P&gt;&lt;P&gt;Snippet&lt;/P&gt;&lt;PRE style="color: gainsboro; background: #1e1e1e; font-size: 13;"&gt;&lt;SPAN style="color: #569cd6;"&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="color: #569cd6;"&gt;void&lt;/SPAN&gt;&amp;nbsp;OnViewPointChanged(&lt;SPAN style="color: #569cd6;"&gt;object&lt;/SPAN&gt;&amp;nbsp;sender,&amp;nbsp;&lt;SPAN style="color: #4ec9b0;"&gt;EventArgs&lt;/SPAN&gt;&amp;nbsp;e) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #569cd6;"&gt;var&lt;/SPAN&gt;&amp;nbsp;newBounds&amp;nbsp;&lt;SPAN style="color: #b4b4b4;"&gt;=&lt;/SPAN&gt;&amp;nbsp;GetCurrentViewpoint(&lt;SPAN style="color: #b8d7a3;"&gt;ViewpointType&lt;/SPAN&gt;&lt;SPAN style="color: #b4b4b4;"&gt;.&lt;/SPAN&gt;BoundingGeometry)&lt;SPAN style="color: #b4b4b4;"&gt;.&lt;/SPAN&gt;TargetGeometry;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #569cd6;"&gt;if&lt;/SPAN&gt;&amp;nbsp;(&lt;SPAN style="color: #b4b4b4;"&gt;!&lt;/SPAN&gt;&lt;SPAN style="color: #4ec9b0;"&gt;GeometryEngine&lt;/SPAN&gt;&lt;SPAN style="color: #b4b4b4;"&gt;.&lt;/SPAN&gt;Within(newBounds,&amp;nbsp;_viewPointBounds)) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetViewpoint(&lt;SPAN style="color: #569cd6;"&gt;new&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style="color: #4ec9b0;"&gt;Viewpoint&lt;/SPAN&gt;(_prevBounds)); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="color: #569cd6;"&gt;else&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_prevBounds&amp;nbsp;&lt;SPAN style="color: #b4b4b4;"&gt;=&lt;/SPAN&gt;&amp;nbsp;newBounds; }&lt;/PRE&gt;&lt;P&gt;This works great for the first time I load the map, but when I set up the map for another view, it ends up stuck at the old one, despite my _viewPointBounds and _prevBounds being reset via the code above in the setup that is called again.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any ideas?&amp;nbsp; I feel like I am pretty close, but I'm just missing something.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Jan 2018 16:24:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199000#M2307</guid>
      <dc:creator>NathanRaley</dc:creator>
      <dc:date>2018-01-12T16:24:00Z</dc:date>
    </item>
    <item>
      <title>Re: How do you limit the map extent in ArcGIS Runtime .NET 100.2</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199001#M2308</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Did you ever find a solution to this? I'm trying to do the same thing.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 22 Aug 2018 17:29:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199001#M2308</guid>
      <dc:creator>MarkCollins</dc:creator>
      <dc:date>2018-08-22T17:29:33Z</dc:date>
    </item>
    <item>
      <title>Re: How do you limit the map extent in ArcGIS Runtime .NET 100.2</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199002#M2309</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;None that provided a descent user experience.&amp;nbsp; It was very choppy and inconsistent.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 29 Aug 2018 14:32:14 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199002#M2309</guid>
      <dc:creator>NathanRaley</dc:creator>
      <dc:date>2018-08-29T14:32:14Z</dc:date>
    </item>
    <item>
      <title>Re: How do you limit the map extent in ArcGIS Runtime .NET 100.2</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199003#M2310</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Not nice, but works. Also seems pretty smooth. Probably good enough for production.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Define an envelope:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;private Envelope _bounds=&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Envelope(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new MapPoint(MAP_BOX_WEST, MAP_BOX_NORTH, SpatialReferences.WebMercator),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new MapPoint(MAP_BOX_EAST, MAP_BOX_SOUTH, SpatialReferences.WebMercator));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now make a polygon as well, because some GeometryEngine operations don't work with Envelopes for some reason:&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;private Polygon _boundsPolygon = EnvelopeToPolygon(_envelope);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;private static Polygon EnvelopeToPolygon(Envelope envelope)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Polygon(new MapPoint[]&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new MapPoint(envelope.XMin, envelope.YMin, SpatialReferences.WebMercator),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new MapPoint(envelope.XMax, envelope.YMin, SpatialReferences.WebMercator),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new MapPoint(envelope.XMax, envelope.YMax, SpatialReferences.WebMercator),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new MapPoint(envelope.XMin, envelope.YMax, SpatialReferences.WebMercator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Finally add a ViewpointChanged event:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;private void MapView_ViewpointChanged(object sender, EventArgs e)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var selected = (MapPoint)MapView.GetCurrentViewpoint(ViewpointType.CenterAndScale).TargetGeometry;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool legal = GeometryEngine.Contains(_bounds, selected);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!legal)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetViewpoint(GeometryEngine.NearestCoordinate(_boundsPolygon, selected).Coordinate);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P&gt;This method changes the viewpoint back to a legal state. Also prevents user interaction during the animation.&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;private async void SetViewpoint(MapPoint point)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MapView.InteractionOptions.IsEnabled = false;&amp;nbsp;&amp;nbsp; //Make sure to initialize MapView.InteractionOptions to avoid NullReferenceException&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; await MapView.SetViewpointCenterAsync(point);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MapView.InteractionOptions.IsEnabled = true;&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 13 Oct 2019 22:44:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199003#M2310</guid>
      <dc:creator>MatthiasPorges</dc:creator>
      <dc:date>2019-10-13T22:44:10Z</dc:date>
    </item>
    <item>
      <title>Re: How do you limit the map extent in ArcGIS Runtime .NET 100.2</title>
      <link>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199004#M2311</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, we were trying something like that.&amp;nbsp; However, since it is on the "changed" event and not a "changing", we were receiving some very weird rubber banding since the viewpoint had already changed and started rendering as opposed to intercepting it prior to the change/render.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Oct 2019 15:31:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/net-maps-sdk-questions/how-do-you-limit-the-map-extent-in-arcgis-runtime/m-p/199004#M2311</guid>
      <dc:creator>NathanRaley</dc:creator>
      <dc:date>2019-10-14T15:31:49Z</dc:date>
    </item>
  </channel>
</rss>

