polymaps y poly… polígonos

9

He estado jugando con Bing Maps + Polymaps recientemente.

Se ha hecho evidente que Bing es el único recurso de mapeo disponible para Polymaps que incluye imágenes satelitales . ¿Es esto cierto?

Estoy tratando de lograr dibujar muchos polígonos de diferentes tamaños en un mapa, y llenarlos con diferentes colores dependiendo de lo que representen. Además, quiero que se pueda hacer clic en cada uno de estos polígonos.

Entiendo que para cargar datos geográficos en un mapa con Polymaps, puede usar .features () o .url () como parte del objeto geoJSON.

Tengo .features () funcionando, pero al usar esta función, los datos del polígono deben incrustarse en el archivo javascript mismo, como en:

map.add(po.geoJson()
        .features([
    {
      "geometry": {
        "coordinates": [[
[[-63.599925935268395,44.64018531837119],[-63.599789142608664,44.640219671024646],[-63.59973818063736,44.6401452402498],[-63.599877655506134,44.64010707058464],[-63.599925935268395,44.64018150140844]],

[[-63.59986692667008,44.639874235083376],[-63.59975695610047,44.63991431339196],[-63.599697947502136,44.63981507181532],[-63.5998159646988,44.639782627416906],[-63.59986424446105,44.6398723265918]]
        ]],
        "type": "MultiPolygon"
      },
      "type": "Feature",
      "id": "beat:05X",
      "properties": {"name": "05X"}
    }

        ]));

Quiero que estos datos realmente provengan de una base de datos y no se encuentren estáticamente dentro del propio JavaScript, lo que me dice que debería usar el método .url () en su lugar, ¿correcto? Y si uso el método .url (), debo pasar una plantilla de URL válida que devuelva geoJSON ... ¿Cómo hago esto con mis propios datos privados? Estoy familiarizado con PHP y mySQL, ¿debo usar un sistema de base de datos espacial?

¿Y cómo encaja un servidor de mapas como MapServer, GeoServer y otros? ¿No podría configurar un script PHP para leer estas plantillas de la variable $ _GET, consultar una base de datos y devolver la cadena de geoJSON adecuada?

Realmente solo necesito algo de inspiración, algunos consejos para ponerme en mi camino y eliminar algunas de las dudas que tengo. Me he encontrado cavando alrededor del intercambio de pila y buscando en Google todo, desde servidores de mapas hasta bases de datos geoespaciales; lo que sea, probablemente lo he leído, pero estoy luchando por armar las piezas.

Pregunta interminable, pero una vez que se aclaren estas cosas, debería estar en una posición mucho mejor.


Podemos eliminar polymaps de la ecuación si hay sustitutos.

En resumen, estoy buscando tomar una gran cantidad de polígonos de una base de datos (¿PostGIS?) De todas las formas, tamaños, colores y transparencias diferentes, y trazarlos en un mapa. ¡Eso es esencialmente! Polymaps tiene gráficos vectoriales + Pensé que hacer esto sobre la marcha sería trivial dado el código anterior ... podemos descartarlo si tienes otras ideas. ¿Cuál es la mejor solución? Mi único requisito comercial es que las imágenes satelitales estén habilitadas ... lo que significa que estamos trabajando con Bing o Google.

Jordan Arseno
fuente

Respuestas:

8

Si está hablando de GeoJSON, puede usar cualquier tipo de base de datos y servidor de back-end, siempre que lo desee:

1) Espera recibir TMS o /{zoom}/{x-coord}/{y-coord}.json URL de estilo y puede convertir Z / X / Y en un cuadro delimitador.

(Eche un vistazo a algo como Tilestache (.org) si desea / necesita ver las matemáticas involucradas en hacer eso).

2) Devuelve GeoJSON.

Para el estilo y la adición de bits interactivos, a los resultados de los datos querrá definir una función de "carga" utilizando el método on () de la capa. Por ejemplo:

var l = org.polymaps.geoJson ();
l.url ("http://example.com/tiles/{Z}/{X}/{Y}.json");
l.on ("carga", función (e) {...});

El sitio de Polymaps tiene mucha buena documentación y código de ejemplo, pero también he incluido las diapositivas y el código de muestra de un taller de Polymaps que hice recientemente:

http://www.aaronland.info/talks/where2011/

http://www.aaronland.info/talks/where2011/workshop

Salud

usuario2016
fuente
Gracias Aaron, los enlaces que has publicado son realmente indispensables. Descargué los archivos para su posterior revisión, me referiré a ellos cuando esté en la etapa de interactividad. No estoy seguro de que Tilestache sea algo que requiera porque Bing se ocupa del mosaico real, ¿no? Los datos personalizados que entregaré son datos de polígonos, no ningún tipo de imágenes .png, .jpg, etc. ¿Hay alguna posibilidad de que pueda echar un vistazo en ./flickr.json? Enlace perdido. Saludos y gracias de nuevo.
Jordan Arseno
Lo encontré en la raíz del taller / 005-data /, ¡gracias!
Jordan Arseno
2

Ok, así que aquí está el trato: esta publicación de blog

Despejado TODO arriba. Es una lectura obligada para cualquiera que juegue con Polymaps. Lo encontré a través de Henry en Reddit

Aaron mencionó el uso de TileStache y de hecho ... Esa es la clave, pero no vi cómo: la publicación de blog anterior es bastante informativa sobre el uso de TileStache. Gran victoria.

Jordan Arseno
fuente
Notó que deseaba que se pudiera hacer clic en cada elemento, ¿cómo lo logró? Tengo mi mapa ejecutándose, pero me encuentro contra una pared para hacer que los elementos puedan hacer clic en el mapa.
hola Erik, si descargas y extraes el complemento polymaps a tu servidor web, puedes acceder a un ejemplo perfecto en: localhost / polymaps / examples / tipsy / tipsy.html - Comprueba la fuente de este chico. A decir verdad, puse este proyecto de mapeo en modo de pausa temporal y aún no logré puntos de datos en los que se pueda hacer clic, pero aquí es exactamente donde comenzaría. ¡Todo lo mejor!
Jordan Arseno
@JordanArsenault el enlace "esta publicación de blog" ya no funciona. ¿Por casualidad descargaste la información? Gracias
Stephen Lead
Hola, Stephen, de hecho, la publicación del blog ya no funciona y no tengo una copia descargada. Sin embargo, el creador de goalfinch se puede encontrar aquí: linkedin.com/in/hanskuder ... Por favor, si encuentra el contenido, avíseme y arreglaré los enlaces, o siéntase libre de editar esta publicación :)
Jordan Arseno