Más

¿Cómo establecer el centro del mapa en ArcGIS API for JavaScript usando Lat Long?

¿Cómo establecer el centro del mapa en ArcGIS API for JavaScript usando Lat Long?


Estoy usando Arcgis javascript API para mi mapa donde el mapa proviene de arcgis en línea usando mapa por ID. Ahora quiero configurar el centro del mapa usando Lat long, para esto estoy usando este método para configurar el centro del mapa

map.centerAt (42.58,78.25);

Pero este método no me funciona. ¿Alguien sabe cómo configurar el centro de mapas usando Lat Long In Arcgis javascript API?


el método centerAt () espera un objeto de geometría puntual.

// pase long, lat y no olvide cargar el módulo AMD apropiado map.centerAt (new Point (-118.15, 33.80)); // o map.centerAt (new Point (-118.15, 33.80, new SpatialReference (4326)));

esto se menciona en la referencia de API: https://developers.arcgis.com/javascript/jsapi/map-amd.html#centerat

el objeto se puede construir usando coordenadas WGS84 sin especificar una referencia espacial, pero no está de más incluirlo.

https://developers.arcgis.com/javascript/jsapi/point-amd.html


Advertencia: necesitas

require (["esri / geometry / Point"], function (Point) {/ * el código va aquí * /});

1) arcgis js api v3.28 solamente,

Por ejemplo, quiero que el centro del mapa esté en lng, lat con nivel de zoom 18

Recomendar:

map.centerAndZoom (nuevo punto (lng, lat), 18);

Alternativa: (a veces, no pudo mover el mapa, tal vez ESRI necesite corregir un error para la api de Javascript v3.24)

map.centerAt (nuevo punto (lng, lat)); // o // map.centerAt (new Point (lng, lat, new SpatialReference ({wkid: 4326}))); map.setZoom (18);

2) solo arcgis js v4.11

view.center = [_center_long, _center_lat] view.zoom = _center_zoom;

¿Cómo establecer el centro del mapa en ArcGIS API for JavaScript usando Lat Long? - Sistemas de Información Geográfica

La clase Map contiene propiedades y métodos para almacenar, administrar y superponer capas comunes a la visualización 2D y 3D. Las capas se pueden agregar y eliminar del mapa, pero se representan a través de MapView (para ver datos en 2D) o SceneView (para ver datos en 3D). Por lo tanto, una instancia de mapa es un contenedor simple que contiene las capas, mientras que la Vista es el medio para mostrar e interactuar con las capas y el mapa base de un mapa.

Varias vistas pueden hacer referencia a un solo mapa. Esta muestra, por ejemplo, contiene un solo mapa que es visible en dos vistas separadas, una en 2D y la otra en 3D. Debido a que se puede acceder a un mapa mediante múltiples vistas en la misma aplicación, toda la interacción del usuario con las capas de un mapa se maneja en la Vista, no en el Mapa.

Una instancia de Map es un componente esencial de MapView y SceneView. Se debe crear un objeto Mapa antes de una vista para que pueda pasarse a la propiedad del mapa de esa vista (por ejemplo, MapView.map, SceneView.map).


Existe un límite en la cantidad máxima de direcciones que se pueden geocodificar en una sola solicitud por lotes con el servicio. La propiedad MaxBatchSize define este límite. Por ejemplo, si MaxBatchSize = 2000, y un conjunto de registros enviado al servicio contiene 3,000 direcciones, solo se geocodificarán las primeras 2,000. La propiedad SuggestedBatchSize también es útil ya que especifica el número óptimo de direcciones para incluir en una sola solicitud por lotes.

Ambas propiedades se pueden determinar consultando la descripción del servicio en https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer?f=pjson.

La aplicación cliente debe tener en cuenta el límite dividiendo la tabla de direcciones de entrada en conjuntos de registros de MaxBatchSize o menos direcciones y enviar cada conjunto de registros al servicio como una solicitud separada. Tenga en cuenta que Generar y publicar se encarga de esto por usted.

Tamaño del lote

Para las operaciones de geocodificación por lotes, el servicio solo devuelve una respuesta después de que se haya geocodificado cada dirección en el conjunto de registros de entrada. Si se produce un error no controlado, como un tiempo de espera, durante el proceso, el servidor no devolverá ningún resultado para esa solicitud, incluso si la mayoría de las direcciones en el conjunto de registros de entrada ya se han codificado geográficamente. Por esta razón, la aplicación cliente debe implementar lógica para detectar y manejar tales errores.

Los tiempos de espera de respuesta tienden a ocurrir cuando las direcciones de entrada están mal formadas o incluyen muchos tokens extraños que probablemente no se correspondan con los componentes de la dirección real. La frecuencia de lotes perdidos debido a estos tiempos de espera se puede mitigar reduciendo el número de direcciones incluidas en cada lote. Siga estas pautas generales al elegir un tamaño de lote para su operación.

  • Si las direcciones que desea geocodificar tienen un formato deficiente, son ambiguas o incluyen muchos tokens, disminuya el tamaño del lote para reducir la probabilidad de que se agote el tiempo de espera. Para casos extremos, es posible que deba configurar el tamaño del lote tan bajo como 10 direcciones. Tenga en cuenta que el uso de lotes más pequeños hará que la operación geocodeAddresses funcione más lentamente en general.
  • Si las direcciones que desea codificar geográficamente están bien formateadas y no son ambiguas, aumente el tamaño del lote para mejorar el rendimiento general. Por ejemplo, un tamaño de lote de 1000 dará como resultado un mejor rendimiento que los tamaños de lote más pequeños en este escenario.

Las direcciones ambiguas son aquellas que incluyen poca información distintiva y para las que puede haber muchas coincidencias potenciales. Por ejemplo, 100 Main St USA es una dirección ambigua. Puede haber cientos de lugares en EE. UU. Con la dirección "100 Main St". Incluir más detalles con la dirección, como la ciudad y el código postal, la distingue de otras direcciones similares y reduce la cantidad de tiempo necesario para encontrar una coincidencia. Por ejemplo, 100 Main St, Escondido, CA, 92026, EE. UU. Es diferente y probablemente solo se corresponderá con un solo lugar.


Conversión de latitud larga a referencia espacial

Estoy tratando de proyectar algunas coordenadas lat long en otra referencia espacial. No se arrojan errores, pero al imprimir el resultado en la consola, aparece "indefinido". ¿Alguien ve dónde me estoy equivocando?

por DanPatterson_Re cansado

Solo para aclarar. longitud y latitud viene en diferentes datums, por lo que los números mismos necesitan una referencia espacial definida (como GCS WGS84 o GCS NAD83) para empezar. Necesita una referencia espacial definida antes de que los datos se puedan proyectar a otra referencia espacial, ya sea que las unidades sean iguales o diferentes.

Está bien, veo lo que quieres decir. Sin embargo, definir el punto con WGS GCS 1984 de la siguiente manera todavía me deja indefinido.

var lat = window.myMap.extent.getCenter (). getLatitude (). toFixed (2)
var long = window.myMap.extent.getCenter (). getLongitude (). toFixed (2)

var latLong = "Latitud:" + lat + "- Longitud:" + long

var rgpfSixSudSR = new SpatialReference (<
semana: 3297
>)

var wgsGCSEightFourSR = new SpatialReference (<
semana: 4326
>)

var geometryService = new GeometryService ("http://192.168.1.209:6080/arcgis/rest/services/Utilities/Geometry/GeometryServer")
var inputPoint = nuevo punto (lat, long, wgsGCSEightFourSR)
var prjParams = new ProjectParameters ()
prjParams.geometries = [inputPoint]
prjParams.outSR = rgpfSixSudSR

geometryService.project (prjParams, function (outputpoint) <
console.log ('Conversión completada')
X = punto de salida [0] .x
Y = punto de salida [0] .y

var center = "X:" + X + "- Y:" + Y

Dan Patterson a écrit:

Solo para aclarar. longitud y latitud viene en diferentes datums, por lo que los números mismos necesitan una referencia espacial definida (como GCS WGS84 o GCS NAD83) para empezar. Necesita una referencia espacial definida antes de que los datos se puedan proyectar a otra referencia espacial, ya sea que las unidades sean iguales o diferentes.


Navegación MapView

La navegación MapView está habilitada de forma predeterminada e incluye la interacción del mouse como se describe en la tabla siguiente.

Acción Comportamiento de MapView
Arrastrar Sartén
Haga doble clic Acercar el cursor
Ctrl + doble clic Alejar el cursor
Desplazarse hacia adelante Acercar el cursor
Desplazarse hacia atrás Alejar el cursor
Clic derecho + Arrastrar Girar 2D
Mayús + clic izquierdo + arrastrar Zoom a la extensión del gráfico dibujado
Teclas de flecha Mueve la vista hacia la izquierda, derecha, arriba o abajo
norte Ajustar la vista para apuntar al norte
A Gire la vista en sentido antihorario
D Girar la vista en el sentido de las agujas del reloj
+ Zoom incremental en el centro del mapa
- Alejar de forma incremental en el centro del mapa
Arrastra con uno o varios dedos Sartén
Toque dos veces con un dedo Zoom Pan en la posición del dedo
Pellizcar con dos dedos adentro / afuera Alejar / acercar
Mueva dos dedos en sentido horario o antihorario Girar

Para deshabilitar la navegación de MapView, debe llamar al método stopPropagation () en los objetos de evento del puntero o los eventos de gestos que desencadenan la navegación.

Consulte nuestros ejemplos sobre cómo deshabilitar la navegación por vistas para obtener ejemplos.


Puntos Lat Lon en js api v2.0

Estoy actualizando una aplicación existente que usa la api JS de v = 1.4 a v = 2.0. Los nuevos mapas funcionan bien, al configurar las extensiones funciona muy bien, pero cuando trato de agregar un nuevo marcador, el marcador aparece en la costa oeste de África en lugar de en la Lat / Lon especificada.

No tengo tanta experiencia con los sistemas de información geográfica, así que cuando traté de buscar qué debería hacer, encontré hilos relacionados con el WKID que, dado que esta v2.0 usa 102100, debería usar un sistema de coordenadas diferente en lugar del basado en grados, y que debería utilizar las utilidades de webMercator para traducir el punto. Lamentablemente, he podido comprender todo esto.

En pocas palabras, cuando usé v1.4, pude crear un punto como este:

var point = new esri.geometry.Point (lon, lat)

En la referencia de API en la sección geometría - & gt punto, ilustra que una forma en que puedo agregar un punto es así:

nuevo esri.geometry.Point (-118.15, 33.80, nuevo esri.SpatialReference ())

Así que simplemente reemplacé los valores X e Y con mis variables lat y lon, pero al agregar un gráfico con ese punto, no se coloca cerca del lugar deseado.

Utilice esri.geometry.geographicToWebMercator () para convertir su geometría de grados decimales a metros para que pueda trazarse en un mapa base que utiliza la proyección web mercator (wkid 102100, entre otros).

El código sería algo como esto:

Cuando usa wkid 102100 y lee puntos del mapa, obtendrá valores para xey en una referencia cartesiana en lugar de coordenadas geográficas, y como se señaló, la API de Javascript ESRI proporciona métodos convenientes para convertir hacia y desde. Hasta aquí todo bien.

Sin embargo, los cálculos dentro de la API parecen usar el WKID incorrecto. Se supone que el WKID 102100 incorpora excentricidad, a diferencia del "antiguo" WKID 102113, la versión esférica. Según el artículo "Migración de esquemas de ordenamiento en teselas de mapas" en el Centro de recursos de ESRI, los servicios en línea de ArcGIS ahora están alojados en 102100 porque es "mejor".

Es cierto, pero cuando pruebo las conversiones reales realizadas por la API de Javascript, de hecho parece que todavía están usando las ecuaciones esféricas. Esto no hace una gran diferencia, pero es suficiente para notarlo, y suficiente para hacer que tus cálculos se salgan de control cuando intentas depurar.

Agregué las dos referencias espaciales a mi utilidad de conversión para que pueda probar este y otros cálculos. Ver http://ersquared.org:8080/marconitest/map/convert.jsp

En el lado izquierdo, ingrese lat y long (recuerde que la longitud es negativa en los EE. UU.), Eligiendo WGS84 como referencia. En el lado derecho, para las coordenadas de destino, elija Web Mercator. Pero luego intente el cálculo usando WGS84 como datum, y luego el esférico WGS84 (como se usa en WDID 102113). Verá que los números esféricos coinciden exactamente con las bibliotecas Javascript de ESRI, mientras que la versión elipsoidal difiere ligeramente.

Ingresé los diversos parámetros de WKID e hice cálculos, etc. con la esperanza de que mis problemas tuvieran que ver con wkid. Pero resultaron ser mucho más grandes, tan grandes que ajustar WKID es algo así como colocar sillas de cubierta en el Titanic, siempre que existan problemas fundamentales con el navegador. Tal como están las cosas ahora, todavía no puedo colocar marcadores en el lugar correcto con Firefox. Tengo curiosidad por saber si solo está usando MSIE, y es por eso que incluso puede notar otros problemas más sutiles.


Uso de la herramienta Ir a XY

Mientras trabaja con un mapa, puede cambiar fácilmente la forma en que ve los datos que contiene. Cuando solo está examinando un mapa, es posible que desee desplazarse y hacer zoom alrededor de los datos para investigar diferentes áreas y características. La mayoría de las herramientas para navegar por sus datos se encuentran en la barra de herramientas Herramientas.

Una de las herramientas especiales se llama Ir a XY. Puede utilizar esta herramienta para escribir las coordenadas x, y y navegar hasta ellas. Las coordenadas que ingrese pueden ser

  • Longitud latitud
  • Valores en el sistema de coordenadas del documento de mapa
  • Coordenadas de la cuadrícula nacional de EE. UU. (USNG)
  • Coordenadas del Sistema de referencia de cuadrícula militar (MGRS)
  • Notación de coordenadas de Universal Transverse Mercator (UTM)

En la barra de herramientas Herramientas, haga clic en el botón Ir a XY para abrir el cuadro de diálogo Ir a XY, que se muestra aquí.

Puede utilizar el cuadro de diálogo Ir a XY para desplazarse, hacer zoom o mostrar la ubicación. También puede dibujar un punto, un punto etiquetado o una llamada en la ubicación. La lista del historial reciente facilita el regreso a las coordenadas que ya ingresó.

Puede configurar los símbolos utilizados para marcadores, etiquetas y llamadas haciendo clic en Dibujo en la barra de herramientas Dibujar y haciendo clic en Propiedades de símbolo predeterminadas.


Para definir la extensión del mapa, use extensión =. El parámetro de extensión acepta coordenadas geográficas (GCS) como MinX, MinY, MaxX, MaxY, coordenadas proyectadas (PCS) como MinX, MinY, MaxX, MaxY, WKID o cadena de texto bien conocida (WKT) como MinX, MinY, MaxX, MaxY, WKT. Puede utilizar comas o punto y coma como separadores. Use punto y coma si sus números usan dos puntos como decimales.

El siguiente es un ejemplo de coordenadas geográficas:

El siguiente es un ejemplo de coordenadas proyectadas:

El siguiente es un ejemplo de cadena de texto conocida:


ESTE Y NORTE A LAT Y LARGO

lo siento de nuevo por la respuesta muy básica. Desafortunadamente, no uso todos los días el SIG, por lo que a veces tengo problemas incluso con algo que ya he hecho. ¿Alguien sabe cómo convertir los valores este y norte (¡tengo miles de valores!) En Lat y Long, ya que necesito DD para el GIS y mis coordenadas están en metros.

Muchas gracias por todas tus sugerencias.

por AdrianWelsh

Hay muchas formas diferentes de hacer esto.

Una forma es cambiar la proyección de su mapa en ArcGIS (haga clic con el botón derecho en Capa en la Tabla de contenido y vaya a Propiedades y luego haga clic en la pestaña Sistema de coordenadas) (Especificar un sistema de coordenadas — Ayuda | ArcGIS for Desktop) a un sistema de coordenadas que use Latitud longitud. Luego, puede Agregar valores XY a sus entidades: Agregar coordenadas XY — Ayuda | ArcGIS for Desktop

por AdrianWelsh

Hay muchas formas diferentes de hacer esto.

Una forma es cambiar la proyección de su mapa en ArcGIS (haga clic con el botón derecho en Capa en la Tabla de contenido y vaya a Propiedades y luego haga clic en la pestaña Sistema de coordenadas) (Especificar un sistema de coordenadas — Ayuda | ArcGIS for Desktop) a un sistema de coordenadas que use Latitud longitud. Luego, puede Agregar valores XY a sus entidades: Agregar coordenadas XY — Ayuda | ArcGIS for Desktop

por NeilAyres

Lo sentimos, pero esta no es la forma correcta de "cambiar un sistema de coordenadas".

NO redefina el sistema de coordenadas a algo que no es.

1. Utilice la herramienta de proyecto para crear una nueva entidad en el sistema de coordenadas de su elección (en su caso, GCS).

2. Cargue los datos basados ​​en medidores (espero que sepa qué es este sistema de coordenadas, quizás UTM) en ArcMap, luego cambie el sistema de coordenadas del marco de datos a un sistema basado en GCS. Luego puede exportar los datos en el CRS del DF.


La geometría no se puede convertir a la referencia espacial del mapa

Intenté usar la sugerencia de Adam Skoog en ese primer hilo (66936) pero cuando llego a lo que aparece como línea # 07. En su código, aparece un error de la siguiente manera:

Error de tipo no detectado: no se puede leer la propiedad 'SpacialReference' de undefined

Lo que parece extraño ya que todo esto está dentro de un bloque obligatorio que incluye Map, ProjectParameters, SpatialReference, Extent, Geometry, GeometryService, etc.

// Tengo xMin, xMax, yMin, yMax enviado a este archivo php y parece que necesito el fx Number () para obtener números reales

// Esto imprime lo siguiente en la consola.

// -8819410.666559163 4792613.494165327 -8813596.67509507 4794481.424044095 pmeasure.js: 50

// -8816503.670827117 4793547.459104711 pmeasure.js: 51

// Y SI EL BLOQUE EMPIEZA CON "var defer min-height: 8pt padding: 0px">

var avgX = ((Número (xMin) + Número (xMax)) / 2)

var avgY = ((Número (yMin) + Número (yMax)) / 2)

console.log (xMin, yMin, xMax, yMax)

var passExtent = new esri.geometry.Extent (Number (xMin), Number (yMin), Number (xMax), Number (yMax), new esri.SpatialReference () )

var projectParams = new esri.tasks.ProjectParameters ()

projectParams.outSR = nuevo esri.SpatialReference () // map.spatialReference ummmmm mapa aún no definido

projectParams.spatialReference = nuevo esri.SpatialReference () // map.spatialReference

// var diferir = esri.config.defaults.geometryService.project (projectParams)

// dojo.when (aplazar, función (projectedGeometry) <

// if (projectedGeometry.length & gt 0) <

centro: [avgX, avgY], // centro: [-79,23, 39,51],

por RobertScheitlin __GISP

Definitivamente ya son Web Mercator.

por RobertScheitlin __GISP

Tal vez esté leyendo mal esto, pero projectParams no tiene una propiedad SpacialReference.

La línea que da el error es esta línea.

var defer = esri.config.defaults.geometryService.project (projectParams)

projectParams.spatialReference = nuevo esri.SpatialReference ()

pero si comento eso, todavía obtengo ese error en rojo. De hecho, es por eso que lo agregué (en un débil intento por corregir el error).

Error de tipo no detectado: no se puede leer la propiedad 'SpacialReference' de undefined

por RobertScheitlin __GISP

projectParams.geometries = passExtent se supone que es una matriz de geometrías como:

Ok, gracias por su ayuda, si le envío esto.

SpatRef = new esri.SpatialReference ()

var projectParams = new ProjectParameters ()

Ahora recibo este error en su lugar.

Error de tipo no detectado: no se puede leer la propiedad 'wkid' de indefinido

que es en realidad donde estaba antes. y todavía entiendo esto.

Mapa: la geometría (wkid: 102685) no se puede convertir a la referencia espacial del mapa (wkid: 102100)

También noté que los corchetes no importan, obtengo exactamente el mismo resultado de cualquier manera con

¿Estoy formateando la "Extensión" de forma incorrecta? Me parece que lo estoy formateando como en esta guía Configuración y uso de extensiones en un mapa | Guía | API de ArcGIS para JavaScript

por RobertScheitlin __GISP

¿Puede darme algún ejemplo de los números de extensión que está tratando de pasar (y describir dónde debería estar esa extensión en el mundo) y su wkid 102685 o 2248. Necesito juntar una muestra para ver qué está pasando.

por MelitaKennedy

No sé cuál es el problema, pero quería volver a verificar las referencias espaciales (sistemas de coordenadas) que está utilizando. wkid: 102685 y wkid: 2248 son ambos NAD 1983 (pies de EE. UU.) State Plane Maryland. Debería poder usar wkid a menos que esté usando un servicio de geometría muy antiguo, y cambiamos el wkid de 102685 a 2248 hace un tiempo. ¿Está seguro de que los valores / extensión que está pasando están en este sistema de coordenadas o en Web Mercator? Nota: Es posible que tenga el mapa frente a los sistemas de coordenadas de origen / capa al revés. Si en realidad fueran Web Mercator o lat / lon, eso puede causar errores como "no se puede convertir".

Otra posibilidad es que se esté quejando de los dos GCS diferentes: NAD83 y WGS84, pero entonces debería haber alguna forma de establecer una transformación geográfica / de datum.

Gracias por su respuesta. Sí, estoy usando MD State Plane. Aquí hay un enlace al servicio que estoy tratando de usar.

Esa es una buena información porque no estaba seguro de cuál usar o por qué estaba en la lista dos veces (ahora lo sé). Probablemente sea mejor usar 2248 si está más actualizado.

Es posible (quizás probable ahora que miro las extensiones de mi servicio) que estas coordenadas sean Web Mercator y no wkid: 2248

así que tal vez no debería intentar proyectarlos de todos modos, pero no tuve suerte antes al intentar establecer la extensión del mapa, por ejemplo.

pero tal vez debería volver atrás y trabajar a partir de esto.

centro: [avgX, avgY], // centro: [-79,23, 39,51],

el xMin, xMax, yMin y yMax que obtengo en console.log se ven así

por RobertScheitlin __GISP

Definitivamente ya son Web Mercator.

Bueno, estoy feliz de decir que conseguí que esto funcionara como quería. Le di crédito a Robert por la respuesta correcta, ya que fue diligente en ayudarme, aunque Melita me guió por el camino correcto. Gracias a la orientación de Robert y Melita, confirmé que las coordenadas que estaba obteniendo ya eran Web Mercator, por lo que no tuve que intentar proyectarlas. Supuse que mi mapa estaba en Web Mercator y que el mapa base de calles estaba en Web Mercator, pero se me ocurrió que cuando creé la variable del mapa, estaba configurando el centro en [-79.2, 39.5] que sé que son coordenadas geográficas wkid : 4326. No estoy seguro de cómo o por qué el mapa usa 4326.

También aprendí al leer sobre esto que no necesito toda la extensión (aparentemente esta es una forma antigua de hacer esto), solo necesitaba el centro y el nivel de zoom que están disponibles a través de las funciones getCenter y getLevel. Estoy usando v3.10 de la API arcgis javascript por cierto.

Usé webMercatorUtils para convertir mis coordenadas centrales a lat / longs, obtuve el nivel de zoom y obtuve con éxito el mapa para cargar el archivo php con la extensión del archivo html del mapa original.

Encontré este enlace donde obtuve el fragmento de código anterior para ser muy útil.


Ver el vídeo: OpenLayers: Set center of a map using another map, contextual links and hookrequirements.