obtener hacer google geolocalización geolocalizacion coordenadas con como javascript union geospatial

hacer - geolocalización con javascript



consultas geoespaciales en javascript (8)

Actualización 2014-04-29: Echa un vistazo a Turf , parece realmente prometedor

JSTS puede hacer uniones de objetos geométricos en el navegador. JSTS se integra con la biblioteca de openlayers y extiende las clases geométricas de openlayers (por ejemplo, OpenLayers.Geometry.Polygon) para que sean capaces de operaciones geométricas. Ejemplo:

>> var poly1 = OpenLayers.Geometry.Polygon.createRegularPolygon( new OpenLayers.Geometry.Point(0.0,0.0), 2, 5); >> var poly2 = OpenLayers.Geometry.Polygon.createRegularPolygon( new OpenLayers.Geometry.Point(1.0,1.0), 2, 4); >> var poly_u = poly1.union(poly2); >> var poly_d = poly1.difference(poly2); >> print(poly_u); POLYGON((1.5667154718422638 -0.4142135623730949,1.1755705045849463 -1.618033988749895, -1.1755705045849465 -1.6180339887498947,-1.902113032590307 0.618033988749895, -0.41421356237309503 1.6990562312593451,-0.4142135623730949 2.414213562373095, 2.414213562373095 2.414213562373095,2.414213562373095 -0.4142135623730949, 1.5667154718422638 -0.4142135623730949))

Geoscript JS es bueno si desea realizar operaciones geométricas en el servidor en JS.

Estoy buscando una biblioteca en javascript que me permita hacer consultas geoespaciales. Sé sobre OpenLayers y GoogleMaps, pero estos dos no son compatibles con intersecciones de unión, etc.

+----+ | | | +-+--+ +--+-+ | | | +----+

a

+----+ | | | +--+ +--+ | | | +----+


¿ geoUtils ?

No estoy seguro de si apoya la operación sindical, pero podría valer la pena intentarlo.


¿Realmente necesitas hacer esto en el lado del cliente? Union es una operación bastante pesada y podría realizarse mejor en el lado del servidor.

Otra API que puede ser útil es la API de Javascript de ArcGIS, aunque por lo que puedo ver, no creo que vaya a funcionar sin ArcGIS Server: http://help.arcgis.com/en/webapi/javascript/arcgis/



Puede ampliar OpenLayers para admitir esta operación. Lo hago utilizando las funciones nativas de OpenLayers. Prueba esto, tal vez debes arreglar y personalizar este código.

// The first object is instanced using data given from gmaps var objBound1 = new OpenLayers.Bounds(); objBound1.extend(new OpenLayers.LonLat(2,2)); objBound1.extend(new OpenLayers.LonLat(8,8)); // The second object is instanced using data given from gmaps var objBound2 = new OpenLayers.Bounds(); objBound2.extend(new OpenLayers.LonLat(5,5)); objBound2.extend(new OpenLayers.LonLat(10,10)); // Extract limits from our objects var arrBound1 = objBound1.toArray(); var arrBound2 = objBound2.toArray(); // Determine an virtual bound. It must contain our two bounds var intMinLeft = arrBound1.left < arrBound2.left ? arrBound1.left : arrBound2.left; var intMinTop = arrBound1.top < arrBound2.top ? arrBound1.top : arrBound2.top; var intMaxRight = arrBound1.right > arrBound2.right ? arrBound1.right : arrBound2.right; var intMaxBottom = arrBound1.bottom > arrBound2.bottom ? arrBound1.bottom : arrBound2.bottom; // Search all points of virtual bound, storing the points contained in bound1 or bound2 var objBoundResult = new OpenLayers.Bounds(); for(var intI = intMinLeft; intI < intMaxRight; intI++) { for(var intJ = intMinTop; intJ < intMaxBottom; intJ++) { if(objBound1.containsLonLat(new OpenLayers.LonLat(intI, intJ)) || objBound2.containsLonLat(new OpenLayers.LonLat(intI, intJ))) { objBoundResult.add(intI, intJ); } } } // objBoundResult is what you want


Puede obtener los resultados de la consulta para un radio o rectángulo que incluya su polígono, luego filtre los resultados utilizando la técnica que se describe aquí: http://msdn.microsoft.com/en-us/library/cc451895.aspx . El ejemplo utiliza los mapas de Bing, pero puede usar fácilmente los mismos principios utilizando el servicio de mapas que prefiera.



Si tiene un servidor disponible, puede ejecutar ESRI ArcGIS Server 10 e iniciar un servicio de geometría. Esto tiene esta funcionalidad disponible a través de una interfaz API (incluyendo REST). Mira su documentación de ayuda: SOAP SDK