Проблема с выводом вектора

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
ArtIntellAnd
Интересующийся
Сообщения: 26
Зарегистрирован: 08 сен 2011, 06:46
Репутация: 0

Проблема с выводом вектора

Сообщение ArtIntellAnd »

Привет всем, использую open layers не могу никак разобраться почему не выводится вектор и как привязать его к координатам на OSM

Код: Выделить всё

<html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
     <script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
  
    <script type="text/javascript">
        
        var map;
        var vectors;
        
        function init(){
               map = new OpenLayers.Map ("map", {
                controls:[
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.LayerSwitcher(),
                    new OpenLayers.Control.Attribution()],
                maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                            maxResolution: 156543.0399,
                numZoomLevels: 16,
                units: 'm',
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326")
            } );
           
     layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
     map.addLayer(layerMapnik);
	 

    var lonLat = new OpenLayers.LonLat(104.25768, 52.263542).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
        map.setCenter (lonLat, 15);

     
	 vectors = new OpenLayers.Layer.Vector(
                "Simple Geometry",
                {
                    styleMap: new OpenLayers.StyleMap({
                        "default":
 {
                            externalGraphic: "tram.png",
                            graphicHeight: 30,
                            graphicYOffset:  30,
                            rotation: "${angle}"
                        },
                    })
                }
            );
			
      map.addLayers(vectors);      
           
	  var features = [];
      features.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(104.25768, 52.263542), {angle: 90} ));
            
	  vectors.addFeatures(features);
};
        
    </script>
  </head>
  
  <body onload="init()">
  
    <div id="map"></div>

</body></html>
ArtIntellAnd
Интересующийся
Сообщения: 26
Зарегистрирован: 08 сен 2011, 06:46
Репутация: 0

Re: Проблема с выводом вектора

Сообщение ArtIntellAnd »

Вывел вектор, но почему он не привязывается к OSM??

Код: Выделить всё

<html>
<head>
  <title>OpenLayers Example</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
	    <script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
	
    </head>
    <body>
      <div style="width:800px; height:800px" id="map"></div>
      <script defer="defer" type="text/javascript">
        var  map = new OpenLayers.Map ("map", {
                controls:[
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.LayerSwitcher(),
                    new OpenLayers.Control.Attribution()],
                maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                            maxResolution: 156543.0399,
                numZoomLevels: 16,
                units: 'm',
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326")
            } );

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

	 
var vectorLayer = new OpenLayers.Layer.Vector("Vector");

var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(104.25768, 52.263542),
{some:'data'},
{externalGraphic: 'tram.png', graphicHeight: 21, graphicWidth: 16, rotation: 90});
vectorLayer.addFeatures(feature);

map.addLayer(vectorLayer);

var lonLat = new OpenLayers.LonLat(104.25768, 52.263542).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter (lonLat, 15);
      </script>
</body>
</html>
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Проблема с выводом вектора

Сообщение Mavka »

Try this:

Код: Выделить всё

var lay_osm = new OpenLayers.Layer.OSM.Mapnik('Mapnik',
    {isBaseLayer: true, sphericalMercator: true}
); 
лангольеры под окном жрали время ом-ном-ном
ArtIntellAnd
Интересующийся
Сообщения: 26
Зарегистрирован: 08 сен 2011, 06:46
Репутация: 0

Re: Проблема с выводом вектора

Сообщение ArtIntellAnd »

Не помогло :( Всё равно вектор стоит на нулевых координатах
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Проблема с выводом вектора

Сообщение Mavka »

При new OpenLayers.Geometry.Point или сами перепроецируйте или попробуйте в параметры слоя добавить проекцию:

Код: Выделить всё

var vectorLayer = new OpenLayers.Layer.Vector("Vector", {
    projection: new OpenLayers.Projection("EPSG:4326")
}); 
лангольеры под окном жрали время ом-ном-ном
ArtIntellAnd
Интересующийся
Сообщения: 26
Зарегистрирован: 08 сен 2011, 06:46
Репутация: 0

Re: Проблема с выводом вектора

Сообщение ArtIntellAnd »

О :) всё, помогло, спасибо большое. А как перерисовывать вектор? Написал вот код, ток не работает :( Или этот вопрос в отдельную тему :)

Код: Выделить всё

<html>
<head>
  <title>OpenLayers Example</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
	<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script> 
  
 <script defer="defer" type="text/javascript">
   function init()
   {
        var map = new OpenLayers.Map('map');
		
            layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {layers: 'basic'});
            map.addLayer(layerMapnik);
            layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
            map.addLayer(layerTilesAtHome);
            layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
            map.addLayer(layerCycleMap);

       map.setCenter(new OpenLayers.LonLat(104,52) // Центр карты
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
            new OpenLayers.Projection("EPSG:900913") // в Spherical Mercator Projection
          ), 12 // Уровень масштаба
        );
		
       map.addControl(new OpenLayers.Control.LayerSwitcher());
		
var vectorLayer = new OpenLayers.Layer.Vector("Overlay");
var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(104, 52).transform(
            new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
            new OpenLayers.Projection("EPSG:900913")) // в Spherical Mercator Projection
          ,
{some:'data'},
{externalGraphic: 'tram.png', graphicHeight: 50, graphicWidth: 50, rotation: 90});
vectorLayer.addFeatures([feature]);

map.addLayer(vectorLayer);	

new_vector();
}
   </script>

<script type="text/javascript">
        function new_vector()
		{
		   var lon = 102;
		   var lat = 53;
     	   var newPoint = new OpenLayers.LonLat(lon, lat).transform(
                                                              new OpenLayers.Projection("EPSG:4326"),
                                                              new OpenLayers.Projection("EPSG:900913"));
		   feature.geometry.x = lonlat.lon;
           feature.geometry.y = lonlat.lat;	
           feature.style.rotation = 45;		   
		   vectorLayer.drawFeture(feature);
        }
</script>	

  </head>
    <body onload = 'init()'>
      <div style="width:600px; height:600px" id="map"></div>
 

</body>
</html>

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя