Closed federicoalvarez-github closed 6 years ago
Hola! genial!, que tipo de servidor tenes? es nodejs y queres integrar esto como un paquete o es en otro lenguaje?
Voy a agregar instrucciones en el README para usarlo
Hola, modifique bastante el codigo para que sea compatible con npm y puedas instalarlo directamente desde ahi. Lo converti en una libreria. Tambien agregue mas informacion para explicar como utilizarlo.
Por ultimo, agregue un parametro para que puedas utilizar la url de tu servidor osm personal. La opcion se llama tileserverUrl
. Te recomiendo usar esa url y basarte en el sample-server.js
Muchas gracias Julian! Al final terminé encontrando https://github.com/Piskvor/staticMapLiteExt.git, que funciona muy bien. Agradezco mucho tu tiempo e interes, voy a hacer una pruba con tu servicio, pero creo que esta un poco escaso de documentacion/ejemplos, eso creo lo hace un poco dificil de usar. De todas formas te agradezco un monton! Saludos, Federico.
Creo que este anda mejor, usa cosas mas modernas y anda rapido, pero el otro se adapta mejor a php u otros escenarios que no voy a considerar en este proyecto. Buenisimo que hayas encontrado uno que te resuelva tu requerimiento particular. Gracias por abrir un issue, me hizo retomar este proyectito, que lo tenia medio abandonado. Saludos!
Mas bien, cuando lo vi quedé copado. La posibilidad de armar el static map con un GeoJSON es genial!
Lo que tengo armado y corriendo en Amazon es un Switch2OSM.
Ya instalé tu proyecto y ejecuté la url en el puerto 3000 de mi servidor, pero siempre me retorna la misma imagen arriba de La Plata.
Probé de cambiar en lib/lib.js los valores de lat, lng y tileserverUrl, pero no genera ningun cambio. Entre prueba y prueba siempre bajaba y subia el servidor.
Tambien probé de mandar por parametros un geojson y el tileserverUrl, pero tampoco cambió nada. Sigue mostrando la misma imagen de La Plata.
Que puedo estar haciendo mal? Como hago para que apunte a mi servidor? Hay algun debug?
Gracias nuevamente!
Saludos, Federico.
Julian, ya lo hice funcionar. Anda perfecto.
Mil gracias por todo! Sobretodo por compartir!
Genial! Me alegro. Cual era el problema?
Tuve que agregar la lectura de parametros lat, lng, zoom y tileserverUrl a sample-server.js. Era eso nomas! Quizas lo puedas agregar al codigo de fuente o a la documentacion para que otros lo puedan usar. Queres que te pase como me quedó? Saludos, Federico.
Dale, pasamelo asi lo agrego, si queres hacer un pull request sos bienvenido, sino pasame por comentario nomas y lo agrego
var express = require('express') , http = require('http') , path = require('path') , engines = require('consolidate') , osmsm = require('./lib/lib.js');
var app = express();
// all environments app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/lib'); app.set('view engine', 'handlebars'); app.set("view options", { layout: false }); app.engine('.html', engines.handlebars);
http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); });
// TEST: won't work! http://localhost:5000/dynamic?geojson={%22type%22:%20%22Point%22,%22coordinates%22:[-105.01621,39.57422]} // 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'
function makeContext(req) { var context = { lat : -34.876779, lng : -56.079339, zoom : 12, geojson: "", tileserverUrl: 'http://korona.geog.uni-heidelberg.de/tiles/roads/x={x}&y={y}&z={z}', }
if (req.query.geojson)
context.geojson = req.query.geojson
if (req.query.lat)
context.lat = req.query.lat
if (req.query.lng)
context.lng = req.query.lng
if (req.query.zoom)
context.zoom = req.query.zoom
if (req.query.tileserverUrl)
context.tileserverUrl = req.query.tileserverUrl
return context
}
app.get('/', function(req, res) { var height var width
if (req.query.height) height = req.query.height
if (req.query.width) width = req.query.width
var context = makeContext(req)
osmsm({ height: height, width: width, lat: context.lat, lng: context.lng, zoom: context.zoom, geojson: context.geojson, tileserverUrl: context.tileserverUrl }).then(function(stream) { stream.on('data', function(data) { res.write(data.toString('binary'), 'binary'); }); stream.on('end', function(data){ res.end(data); }); }).catch(function(err) { res.end(". Perhaps there is an error in your parameters?"); }) });
app.get('/dynamic', function(req, res) { var context = makeContext(req) res.render('template.html', context); });
Julian, cómo estás? Tengo mi propio servidor de OSM y quiero agregarle esta funcionalidad.
Es eso posible? Tenés algo en lo que me pueda basar?
Muchas gracias!
Saludos, Federico.
(Habia escrito todo en ingles hasta que vi que eras Argentino, yo soy Uruguayo!)