<?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 How to zoom to a non-Web Mercator extent? in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336042#M31050</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Given an ArcGIS Server service which is stored in non-Web Mercator coordinates, how can I zoom to its extent when the map is using Web Mercator?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There is a method &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://developers.arcgis.com/en/javascript/jsapi/namespace_geometry-amd.html#geographicToWebMercator" rel="nofollow" target="_blank"&gt;geographicToWebMercator&lt;/A&gt;&lt;SPAN&gt; - but what if the original coordinates are not geographic?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below is some sample code to illustrate the problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Steve&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html&amp;gt; &amp;nbsp; &amp;lt;head&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Zoom to non-WM dynamic layer&amp;lt;/title&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link rel="stylesheet" href="http://js.arcgis.com/3.6/js/esri/css/esri.css"/&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html,body,#mapDiv{ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding:0; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin:0; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height:100%; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="http://js.arcgis.com/3.6/"&amp;gt;&amp;lt;/script&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.require("esri.map"); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var map; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var url = "http://loczy.mfgi.hu/ArcGIS/rest/services/TJAM/surf_ujfalu_t/MapServer/"&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function init() { &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; //Get the layer's extent from ArcGIS Server &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esri.request({ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: url, &amp;nbsp; content: {f:&amp;nbsp; "json"}, &amp;nbsp; handleAs: "json", &amp;nbsp; callbackParamName: "callback", &amp;nbsp; load: function(response) { &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; //Create the map. Since we're specifying the Gray basemap it'll use Web Mercator &amp;nbsp;&amp;nbsp; map = new esri.Map("mapDiv", {basemap: "gray"});&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; //Add the dynamic layer. Although it's not stored in Web Mercator, it's automatically &amp;nbsp;&amp;nbsp; //projected on-the-fly and displays in the correct location &amp;nbsp;&amp;nbsp; var dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(url);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; map.addLayer(dynamicMapServiceLayer); &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; //Zoom the map to the new layer's extent. This fails, since the extent doesn't use WM &amp;nbsp;&amp;nbsp; map.setExtent(response.initialExtent); &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; error: function (error) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert("Sorry, there was a problem zooming to the new layer"); &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; dojo.ready(init); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt; &amp;nbsp; &amp;lt;/head&amp;gt; &amp;nbsp; &amp;lt;body&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="mapDiv"&amp;gt;&amp;lt;/div&amp;gt;\ &amp;nbsp; &amp;lt;/body&amp;gt; &amp;lt;/html&amp;gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 14 Aug 2013 10:56:54 GMT</pubDate>
    <dc:creator>StephenLead</dc:creator>
    <dc:date>2013-08-14T10:56:54Z</dc:date>
    <item>
      <title>How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336042#M31050</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Given an ArcGIS Server service which is stored in non-Web Mercator coordinates, how can I zoom to its extent when the map is using Web Mercator?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There is a method &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://developers.arcgis.com/en/javascript/jsapi/namespace_geometry-amd.html#geographicToWebMercator" rel="nofollow" target="_blank"&gt;geographicToWebMercator&lt;/A&gt;&lt;SPAN&gt; - but what if the original coordinates are not geographic?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below is some sample code to illustrate the problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Steve&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html&amp;gt; &amp;nbsp; &amp;lt;head&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Zoom to non-WM dynamic layer&amp;lt;/title&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link rel="stylesheet" href="http://js.arcgis.com/3.6/js/esri/css/esri.css"/&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html,body,#mapDiv{ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding:0; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin:0; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height:100%; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="http://js.arcgis.com/3.6/"&amp;gt;&amp;lt;/script&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.require("esri.map"); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var map; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var url = "http://loczy.mfgi.hu/ArcGIS/rest/services/TJAM/surf_ujfalu_t/MapServer/"&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function init() { &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; //Get the layer's extent from ArcGIS Server &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esri.request({ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: url, &amp;nbsp; content: {f:&amp;nbsp; "json"}, &amp;nbsp; handleAs: "json", &amp;nbsp; callbackParamName: "callback", &amp;nbsp; load: function(response) { &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; //Create the map. Since we're specifying the Gray basemap it'll use Web Mercator &amp;nbsp;&amp;nbsp; map = new esri.Map("mapDiv", {basemap: "gray"});&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; //Add the dynamic layer. Although it's not stored in Web Mercator, it's automatically &amp;nbsp;&amp;nbsp; //projected on-the-fly and displays in the correct location &amp;nbsp;&amp;nbsp; var dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(url);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; map.addLayer(dynamicMapServiceLayer); &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; //Zoom the map to the new layer's extent. This fails, since the extent doesn't use WM &amp;nbsp;&amp;nbsp; map.setExtent(response.initialExtent); &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; error: function (error) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert("Sorry, there was a problem zooming to the new layer"); &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; dojo.ready(init); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt; &amp;nbsp; &amp;lt;/head&amp;gt; &amp;nbsp; &amp;lt;body&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="mapDiv"&amp;gt;&amp;lt;/div&amp;gt;\ &amp;nbsp; &amp;lt;/body&amp;gt; &amp;lt;/html&amp;gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Aug 2013 10:56:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336042#M31050</guid>
      <dc:creator>StephenLead</dc:creator>
      <dc:date>2013-08-14T10:56:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336043#M31051</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;If you know the initialExtent's Spatial Reference WKID, you can convert the coordinates using proj4js (&lt;/SPAN&gt;&lt;A href="http://trac.osgeo.org/proj4js/" rel="nofollow noopener noreferrer" target="_blank"&gt;http://trac.osgeo.org/proj4js/&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Using proj4js is easy, it'll look like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;

var srcProj = new Proj4js.Proj('EPSG:YOUR_WKID');
var destProj = new Proj4js.Proj('EPSG:3857'); // 3857 is the default map WKID

var bottomLeft = new Proj4js.Point(response.initialExtent.minx, response.initialExtent.miny);
Proj4js.transform(srcProj, destProj, bottomLeft);

var topRight = new Proj4js.Point(response.initialExtent.maxx, response.initialExtent.maxy);
Proj4js.transform(srcProj, destProj, topRight);

map.setExtent(bottomLeft.x, bottomLeft.y, topRight.x, topRight.y, map.spatialReference);

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:55:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336043#M31051</guid>
      <dc:creator>JakubMalec</dc:creator>
      <dc:date>2021-12-11T15:55:31Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336044#M31052</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks Jakub,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This looks really promising. I'm a bit confused as to which file to include, though.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I downloaded the package from &lt;/SPAN&gt;&lt;A href="https://github.com/proj4js/proj4js"&gt;https://github.com/proj4js/proj4js&lt;/A&gt;&lt;SPAN&gt; - I assumed that I should add dist/proj4.js or dist/proj4.min.js&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But when I use either file, the line &lt;/SPAN&gt;&lt;SPAN style="color: #3E3E3E; font-family: Courier New;"&gt;new Proj4js.Proj &lt;/SPAN&gt;&lt;SPAN&gt;is not recognised.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The user guide at &lt;/SPAN&gt;&lt;A href="http://trac.osgeo.org/proj4js/wiki/UserGuide"&gt;http://trac.osgeo.org/proj4js/wiki/UserGuide&lt;/A&gt;&lt;SPAN&gt; seems a bit older (possibly out of date), and references:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;// include the library&lt;BR /&gt;&amp;lt;script src="lib/proj4js-combined.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;but this file is no longer included in the package. The GitHub repo contains mention of grunt - is this a requirement?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for any advice,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Steve&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;EDIT: nevermind, I used the legacy code from &lt;/SPAN&gt;&lt;A href="http://trac.osgeo.org/proj4js/wiki/Download"&gt;http://trac.osgeo.org/proj4js/wiki/Download&lt;/A&gt;&lt;SPAN&gt; and it seems to work better&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Aug 2013 13:30:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336044#M31052</guid>
      <dc:creator>StephenLead</dc:creator>
      <dc:date>2013-08-14T13:30:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336045#M31053</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;An alternative way is to use geometryService.project to reproject the extent in non-Web Mercator to Web Mercator, and use the result to zoom the map to in the callback function.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Aug 2013 14:15:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336045#M31053</guid>
      <dc:creator>JasonZou</dc:creator>
      <dc:date>2013-08-14T14:15:50Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336046#M31054</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks Jason, that looks a bit more robust as it removes the external dependencies.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If anyone from Esri is reading this, it would be nice if the map object could do this automatically - calling &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;map.setExtent(non-web-mercator-extent)&lt;/SPAN&gt;&lt;SPAN&gt; could conceivably handle this on-the-fly.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Aug 2013 08:35:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336046#M31054</guid>
      <dc:creator>StephenLead</dc:creator>
      <dc:date>2013-08-15T08:35:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336047#M31055</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Stephen,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; also, you don't need to use esri.request, just listen for the layer 'onLoad' event and then the initialExtent is a property of the layer.&amp;nbsp; Using a geometry service to project the extent is the way to go.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;nbsp; &amp;lt;head&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Zoom to non-WM dynamic layer&amp;lt;/title&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;link rel="stylesheet" href="http://js.arcgis.com/3.6/js/esri/css/esri.css"/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; html, body, #mapDiv {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin: 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height: 100%;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script src="http://js.arcgis.com/3.6/"&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.require("esri.map");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.require("esri.tasks.geometry");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var map;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var url = "http://loczy.mfgi.hu/ArcGIS/rest/services/TJAM/surf_ujfalu_t/MapServer/"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var gsUrl = "http://server.domain.com/arcgis/rest/services/Geometry/GeometryServer"; // url to your geometry service 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function init(){

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map = new esri.Map("mapDiv",{basemap: "gray"});

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(url);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dynamicMapServiceLayer.on('load',function(){

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var projectParams = new esri.tasks.ProjectParameters();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; projectParams.geometries = [dynamicMapServiceLayer.initialExtent];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; projectParams.outSR&amp;nbsp; = map.spatialReference;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var gs = new esri.tasks.GeometryService(gsUrl);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gs.project(projectParams).then(function(projectedGeometries){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var initialExtentWM = projectedGeometries[0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.setExtent(initialExtentWM);
&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; map.addLayer(dynamicMapServiceLayer);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.ready(init);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;
&amp;nbsp; &amp;lt;/head&amp;gt;
&amp;nbsp; &amp;lt;body&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="mapDiv"&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp; &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:55:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336047#M31055</guid>
      <dc:creator>JohnGrayson</dc:creator>
      <dc:date>2021-12-11T15:55:33Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336048#M31056</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;It took me quite a while to figure out that the layer properties will be populated when it's loaded. In addition, the documentation should also mention what properties are read-only, and what are read-write. For constructors, which parameters are required, and which are optional. These are the key info for developers to use the api properly. I couldn't remember how many times I spent lots of effort trying to figure out these simple things which should be documented. ESRI does need to improve the documentation.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Aug 2013 14:47:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336048#M31056</guid>
      <dc:creator>JasonZou</dc:creator>
      <dc:date>2013-08-15T14:47:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336049#M31057</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;jason,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in the API reference optional parameters for contructors and methods are typically denoted with a '?'&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;i can't think of an occasion when i attempted to set a property on an object and found that it was 'read-only'.&amp;nbsp; can you share an example?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Aug 2013 15:19:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336049#M31057</guid>
      <dc:creator>JohnGravois</dc:creator>
      <dc:date>2013-08-15T15:19:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336050#M31058</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Here is one example: featureLayer.maxRecordCount. I thought I can set the value, but turned out it's a value carried over from the map service. Actually there is no way to control the record count at the feature layer level. I am not sure if this property should exist in the api if its value cannot be set and be honored.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Aug 2013 16:06:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336050#M31058</guid>
      <dc:creator>JasonZou</dc:creator>
      <dc:date>2013-08-15T16:06:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336051#M31059</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;you don't need to use esri.request, just listen for the layer 'onLoad' event and then the initialExtent is a property of the layer.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi John,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm actually using esri.request to retrieve additional properties of the service (this is just a cut-down version for repro purposes) - but that's a good tip.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Steve&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Aug 2013 16:08:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336051#M31059</guid>
      <dc:creator>StephenLead</dc:creator>
      <dc:date>2013-08-15T16:08:18Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336052#M31060</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;@Jason.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;thanks for the feedback.&amp;nbsp; i took a look at the documentation for some other popular classes and it seems that in most other similar instances, the description makes it a little clearer when a property is determined by the service itself.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;i'm under the impression that we don't denote "read-only" for properties in the API because the concept is not actually enforced, but i agree with you that providing additional information to developers regarding individual properties is warranted.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;the only other potential candidate i have found so far is &lt;/SPAN&gt;&lt;A href="https://developers.arcgis.com/en/javascript/jsapi/arcgisdynamicmapservicelayer-amd.html#capabilities"&gt;Layer.capabilities&lt;/A&gt;&lt;SPAN&gt;.&amp;nbsp; can you think of any others for me to include in my request to the development team?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Aug 2013 16:49:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336052#M31060</guid>
      <dc:creator>JohnGravois</dc:creator>
      <dc:date>2013-08-15T16:49:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336053#M31061</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks John for looking into this issue. To be honest, I am not good at documenting the issues I've experienced. I know maxRecordCount is a read-only property since we tried to control how many features can be returned at the feature layer level and failed. It cannot be even controlled at the map service level via JS api. The only way to control is to change the settings via ArcGIS Server Manager or ArcCatalog (maybe?). In general, I know Javascript allows modifying any property of an object. The only issue is whether JS API will honor the change or not. I can easily tell a property is read-write if there is a setter method for it. Otherwise, I will need to guess.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Aug 2013 17:03:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336053#M31061</guid>
      <dc:creator>JasonZou</dc:creator>
      <dc:date>2013-08-15T17:03:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to zoom to a non-Web Mercator extent?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336054#M31062</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;you are correct.&amp;nbsp; maxRecordCount is a property set at the map service level at the time of publishing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;i found a couple other properties whose description seems to be a little ambiguous about the fact that the property is determined by the service itself.&amp;nbsp; if anyone else was confused by another one.&amp;nbsp; id love to hear about it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;FeatureLayer.hasAttachments&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FeatureLayer.hasAttributionData&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FeatureLayer.supportsStatistics&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FeatureLayer.supportsAdvancedQueries&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Aug 2013 17:15:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-to-zoom-to-a-non-web-mercator-extent/m-p/336054#M31062</guid>
      <dc:creator>JohnGravois</dc:creator>
      <dc:date>2013-08-15T17:15:57Z</dc:date>
    </item>
  </channel>
</rss>

