Forum QGIS

Pełna wersja: GEOJSON Podmiana domyślnego markera + rotation
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2
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
(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]);
Z przykładów wynika, że wielkość tej grafiki jest określana przez pointradius.

Kod PHP:
var = new OpenLayers.Style({
  
'pointRadius'10,
  
'externalGraphic''${thumbnail}'
}); 
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
Zdefiniowałeś obiekt klasy style, a w parametrach dodałeś nieistniejący obiekt klasy Stylemap

http://docs.openlayers.org/library/featu...le-objects
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                    
                });
zmieniłeś, ale nie odkomentowałeś
(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.
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.
Stron: 1 2