Incubadora de Proyectos....

Hola a todos,

Tal como anuncié cuando me presenté en sociedad, estoy haciendo un programa que funciona como incubadora de Proyectos.

Este programa corre usando la API del Internet Explorer 7, y, en teoría, funciona en cualquier versión de windows posterior a Win2000.

El propósito de este programa es poder testear cualquier archivo HTML local o remoto, e “inyectarle” código Javascript para poder testear su comportamiento.

Hasta ahora, todo funciona bien.

El tema es que estoy usando una API de OpenStreetMaps, que, en realidad, es una suerte de Frankenstein, porque la fui armando con partes extraidas de distintos ejemplos.

Si bien el resultado es el esperado, me gustaría que la vista de los servicios disponibles en los layers, tenga mas que ver con los avances que están produciendo en este foro.

Mi código HTML es el siguiente

<!DOCTYPE html>
<html>
<head>
  <title>Leaflet Quick Start Guide Example</title>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="http://leafletjs.com/dist/leaflet.css" />
  <!--[if lte IE 8]><link rel="stylesheet" href="http://leafletjs.com/dist/leaflet.ie.css" /><![endif]-->
<style>
  body {
    padding: 0;
    margin: 0;
  }
  html, body, #map {
    height: 100%;
  }
</style>
</head>
<body>
  <div id="map"></div>
  <script src="http://leafletjs.com/dist/leaflet.js"></script>

  <script>
    var i = 0;
    var mlat = -34.6553960609;
    var mlng = -59.42188975;
    var map = L.map('map').setView([mlat, mlng], 14);

    L.tileLayer('http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png', {
	maxZoom: 18,
	attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>'
	}).addTo(map);

    var popup = L.popup();

    var myIconRed = L.icon({
    	iconUrl: 'marker-icon_red.png',
    	iconSize: [26, 41],
    	iconAnchor: [26, 41],
    	popupAnchor: [-13, -33],
    	shadowUrl: '',
    	shadowSize: [0, 0],
    	shadowAnchor: [0, 0]
	});

    var myIconBlue = L.icon({
    	iconUrl: 'marker-icon_blue.png',
    	iconSize: [26, 41],
    	iconAnchor: [26, 41],
    	popupAnchor: [-12, -33],
    	shadowUrl: '',
    	shadowSize: [0, 0],
    	shadowAnchor: [0, 0]
	});

    var myIconGreen = L.icon({
    	iconUrl: 'marker-icon_green.png',
    	iconSize: [26, 41],
    	iconAnchor: [26, 41],
    	popupAnchor: [-12, -33],
    	shadowUrl: '',
    	shadowSize: [0, 0],
    	shadowAnchor: [0, 0]
	});

    var NoIcon = L.icon({
    	iconUrl: 'marker-icon_noicon.png',
    	iconSize: [1, 1],
    	iconAnchor: [0, 0],
    	popupAnchor: [0, 0],
    	shadowUrl: '',
    	shadowSize: [0, 0],
    	shadowAnchor: [0, 0]
	});

    function onMapClick(e) {
	window.external.nbSetVar('[Coord_X]', e.latlng.lat);
	window.external.nbSetVar('[Coord_Y]', e.latlng.lng);
    }

    map.on('click', onMapClick);

// esto crea un popup
// popup
// .setLatLng(e.latlng)
// .setContent("You clicked the map at " + e.latlng.toString())
// .openOn(map);

// crea un marker
// L.marker([mlat, mlng]).addTo(map)
// .bindPopup("<b>Hola Mundo!</b><br />Aca estoy !").openPopup();



  </script>
</body>
</html>

Como todavía no manejo muy claramente que función cumple cada librería .js, es que no se bien cual es la que tengo que reemplazar para que la vista sea mas actualizada.

Alguien podría decirme o sugerirme que cambios hacer ?

No se preocupen por el contenido de la función onMapClick(), esto es por compatibilidad con el compilador. Funciona bien.

Infinitas gracias !
David

Capaz te convenga postearlo (en inglés) en el foro general de Development http://forum.openstreetmap.org/viewforum.php?id=13

Hola Pertile,

Gracias por la sugerencia.

Mi idea es usar la misma librería que usan en:

http://openstreetmap.org.ar/

que es mas apropiada para lo que tengo que hacer.

y no estoy muy seguro que en el foro que me indicas, sepan cual es la librería .js que están usando en Argentina.

Saludos desde Buenos Aires,
David

no sabemos quién ha incursionado en estos temas, es bastante especifico lo tuyo. Tal vez seas el 1ro. Adelante y no te desmotives en los foros que te indico pertile y otros se puede encontar soporte especifico con alguién que tenga experiencia en el tema

Gracias,

Imagino que con un poco mas de tiempo, podré darme cuenta solito qué hace cada cosa y cambiarlas a mi gusto.

Primer Release del Programa

Se puede descargar desde:

https://app.box.com/s/zicukba0qzssa33c1cr1

Archivo: OSM_Maps.zip
Tamaño: 678.4 KB
Cuenta de BOX.com de Neo Regalos

Observaciones:

  • El Inspector de Variables todavía no funciona. Ojalá alguna vez funcione…

  • La GeoLocación está basada en un servicio web de Yahoo, que es el mas eficiente.

  • Hay una diferencia de aproximadamente 100 metros a la redonda, entre las coordenadas que brinda Yahoo y la ubicación en el plano. Las coordenadas que ofrece http://www.mapquestapi.com/, difieren en algo asi como 1000 metros a la redonda, y no funcionan en todos los casos. Si alguien me sugiere algún servicio de geolocación que funcione siempre y bien, con un rango de error menor, bienvenido sea, actualizo el programa

  • La consola javascript funciona correctamente. Obviamente se requieren conocimientos de javascript y de la API de Leaflet.

  • Les adjunto el archivo OSM.htm que es el que uso de base para conectar el Programa con los mapas. si quieren testar algún tipo de servicio que estén trabajando, siéntanse libres de modificar esa página web. ( agreguen cosas, pero no borren las que están… ). El programa está usando la API del Internet Explorer 7, es decir, no pongan componentes demasiado complejos que no vayan a funcionar en esa versión.

  • Testeado en WinXP SP3 y Win7 Ultimate.

Espero sus comentarios para ver si les ha funcionado bien.

Saludos,
David