Forum QGIS
GEOJSON Podmiana domyślnego markera + rotation - Wersja do druku

+- Forum QGIS (http://forum.quantum-gis.pl)
+-- Dział: Web GIS (http://forum.quantum-gis.pl/forum-3.html)
+--- Dział: OpenLayers (http://forum.quantum-gis.pl/forum-12.html)
+--- Wątek: GEOJSON Podmiana domyślnego markera + rotation (/thread-671.html)

1 2


GEOJSON Podmiana domyślnego markera + rotation - BIMSON - 21-02-2012

Witam
W openlayers dodałem warstwę wektorową na której wyświetlam plik geojson generowany z bazy MySQL.
KOD:
Kod:
var vectorlayer = new OpenLayers.Layer.Vector("geojson", {
                    
                    strategies: [new OpenLayers.Strategy.Fixed()],                
                    protocol: new OpenLayers.Protocol.HTTP({
                    url: "new.php",
                        format: new OpenLayers.Format.GeoJSON()
                    
                    }),
                                        // parametry opcjonalne
                    displayInLayerSwitcher: true,  
                    
                });

Chce zamienić istniejący marker(domyślną kropkę) na własny i obracać go o kąt podany w parametrze feature.attributes['GPSImgDirection'].
Prosze o jakieś wskazówki.
Projekt do obejrzenia pod adresem: http://www.lukaszbimek.pl/gis/geojsongis.html


RE: GEOJSON Podmiana domyślnego markera + rotation - Odoakr - 21-02-2012

Wszystko jest tu:
http://docs.openlayers.org/library/feature_styling.html


RE: GEOJSON Podmiana domyślnego markera + rotation - BIMSON - 21-02-2012

(21-02-2012, 10:10)Odoakr napisał(a): Wszystko jest tu:
http://docs.openlayers.org/library/feature_styling.html
Zgodnie z przykładem i example'm który znalazłem chciałem zacząć od zmiany markera. Ale nadal wyświetla mi się domyślna kropka. Mój kod wygląda tak:
Kod:
vectorlayer = new OpenLayers.Layer.Vector("geojson",{
                    
                    strategies: [new OpenLayers.Strategy.Fixed()],                
                    protocol: new OpenLayers.Protocol.HTTP({
                    url: "new.php",
                        format: new OpenLayers.Format.GeoJSON()
                    
                    }),
                                        // parametry opcjonalne
                    displayInLayerSwitcher: true,
                    
                    
                    
                },{
                    styleMap: new OpenLayers.StyleMap({
                        "default": {
                            externalGraphic: "icon.png"
                            //graphicWidth: 17,
                            //graphicHeight: 20,
                            //graphicYOffset: -19,
                           // rotation: "${angle}",
                           // fillOpacity: "${opacity}"
                        },
                        "select": {
                            cursor: "crosshair",
                            //externalGraphic: "foto/icon/icon.png"
                        }
                    })
                });
    
map.addLayers([gphy, gmap, ghyb, gsat, vectorlayer]);



RE: GEOJSON Podmiana domyślnego markera + rotation - Odoakr - 21-02-2012

Z przykładów wynika, że wielkość tej grafiki jest określana przez pointradius.

Kod PHP:
var = new OpenLayers.Style({
  
'pointRadius'10,
  
'externalGraphic''${thumbnail}'
}); 



RE: GEOJSON Podmiana domyślnego markera + rotation - BIMSON - 21-02-2012

To nic nie dało.
Teraz mam tak :
Kod:
var s = new OpenLayers.Style({
  pointRadius: 10,
  externalGraphic: "icon.png"
});
    vectorlayer = new OpenLayers.Layer.Vector("geojson",{styleMap:s},
                
                {
                    strategies: [new OpenLayers.Strategy.Fixed()],                
                    protocol: new OpenLayers.Protocol.HTTP({
                    url: "new.php",
                        format: new OpenLayers.Format.GeoJSON()
                    
                    }),
                                        // parametry opcjonalne
                    displayInLayerSwitcher: true                    
                });
I wogóle nie wyświetla markerów, nawet tego domyślnego. Consola bez błędów


RE: GEOJSON Podmiana domyślnego markera + rotation - Odoakr - 21-02-2012

Zdefiniowałeś obiekt klasy style, a w parametrach dodałeś nieistniejący obiekt klasy Stylemap

http://docs.openlayers.org/library/feature_styling.html#using-style-objects


RE: GEOJSON Podmiana domyślnego markera + rotation - BIMSON - 21-02-2012

Ehh, no tak moje niedopatrzenie, zbyt często kopiuje kod Smile
Zamieniłem tez pointRadius na konkretne wymiary markera.
Ale cały czas bez zmian, nie widać żadnego markera. Po modyfikacjach wygląda to tak:
Kod:
var s = new OpenLayers.StyleMap({
  fillOpacity: 1,
  //pointRadius: 10,
  graphicWidth:70,
  graphicHeight:70,
  externalGraphic: "icon.png",
  rotation:'$(GPSImgDirection)'
  
});
    vectorlayer = new OpenLayers.Layer.Vector("geojson",{styleMap:s},
                
                {
                    strategies: [new OpenLayers.Strategy.Fixed()],                
                    protocol: new OpenLayers.Protocol.HTTP({
                    url: "new.php",
                        format: new OpenLayers.Format.GeoJSON()
                    
                    }),
                                        // parametry opcjonalne
                    displayInLayerSwitcher: true                    
                });



RE: GEOJSON Podmiana domyślnego markera + rotation - Odoakr - 21-02-2012

zmieniłeś, ale nie odkomentowałeś


RE: GEOJSON Podmiana domyślnego markera + rotation - BIMSON - 21-02-2012

(21-02-2012, 14:55)Odoakr napisał(a): zmieniłeś, ale nie odkomentowałeś
Odkomentowanie nic nie dało.
Poza tym czytałem że albo używa się pointRadius albo dokładnych wymiarów graphicWidth i graphicHeight dlatego zakomentowałem.


RE: GEOJSON Podmiana domyślnego markera + rotation - Odoakr - 21-02-2012

Jejku! Własnie zauważyłem, że w Twoim przykładzie jest więcej kodu. W złym miejscu masz styleMap. Wrzuć to tam gdzie masz strategies, albo displayInLayerSwither.