6 votos

Intentando colocar una geometría de punto en el mapa OSM, sin éxito

Tengo un pedazo de código que lleva una capa de mapa y coloca una capa de vector en la parte superior de eso. En la actualidad, sólo estoy tratando de colocar un par de puntos en la parte superior del mapa, sin éxito.

Me las arreglé para poner 1 punto, pero sólo iba a permanecer en el medio del mapa.

Me tomó todo el código html y simplificado. Aquí está el código para el conjunto de la página, es independiente, así que usted puede simplemente copiar y pegar en una nueva página html y ver el problema.

<html>
<body onload="initMapp()">
    <div id="mapp" class="smallmap"></div>
</body>
  <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
  <script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
  <script>
        //      $(document).ready(function() {
        //          initMapp();
        //      })

        var lon = 0;
        var lat = 0;
        var zoom = 3    ;

        var map; //complex object of type OpenLayers.Map

        function initMapp() {

            map = new OpenLayers.Map("mapp", {
                units : 'm'
            });

            layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
            layerMapnik.setOpacity(1);
            map.addLayer(layerMapnik);

            addPointToMap(map);

            var switcherControl = new OpenLayers.Control.LayerSwitcher();
            map.addControl(switcherControl);
            switcherControl.maximizeControl();

            if (!map.getCenter()) {
                var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map
                        .getProjectionObject());
                map.setCenter(lonLat, zoom);
            }
        }

        function addPointToMap(pMap){
            var coordinates = new Array();

            var pointStyle = {externalGraphic: 'http://www.humanized.com/weblog/images/persimmon.gif', graphicHeight: 20, graphicWidth: 20}

            // Make Point
            coordinates.push(new OpenLayers.Geometry.Point(33, 33));
            var pointsGeometry = new OpenLayers.Geometry.MultiPoint(coordinates);
            var pointFeature =  new OpenLayers.Feature.Vector(pointsGeometry, null, pointStyle);

            // Layer
            var pointsLayer = new OpenLayers.Layer.Vector("Points Layer");
            pointsLayer.addFeatures([pointFeature]);
            pMap.addLayer(pointsLayer);         
        }
  </script>
  <style>
.smallmap {
    height: 80%;
    width: 80%;
}
  </style>
</html>

Para reiterar, ¿cómo hacer el punto en algún lugar en el mapa? (He lon/lat)

Gracias!

Actualización

Sólo para que sea más fácil para los lectores en el futuro. La respuesta que está marcado como la solución a continuación sólo alude a la solución completa. La "solución total" es para modificar el punto de código de creación como tal:

// Make Point
coordinates.push(new OpenLayers.Geometry.Point(33, 33).transform(new OpenLayers.Projection("EPSG:4326"), map
                        .getProjectionObject()));

6voto

tobes Puntos 19

Comprobar esta cuestión similar: puntos de lat/lon superposición en Google capa de OpenLayers. Es para mapas de Google pero igual puede usar OSM como fondo. El resto todavía se aplica.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X