Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
GEOJSON Podmiana domyślnego markera + rotation
21-02-2012, 09:45, (Ten post był ostatnio modyfikowany: 21-02-2012, 09:46 {2} przez BIMSON.)
#1
GEOJSON Podmiana domyślnego markera + rotation
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,
#2
RE: GEOJSON Podmiana domyślnego markera + rotation
Wszystko jest tu:
http://docs.openlayers.org/library/feature_styling.html
21-02-2012, 12:33,
#3
RE: GEOJSON Podmiana domyślnego markera + rotation
(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]);
21-02-2012, 13:15,
#4
RE: GEOJSON Podmiana domyślnego markera + rotation
Z przykładów wynika, że wielkość tej grafiki jest określana przez pointradius.

Kod PHP:
var = new OpenLayers.Style({
  
'pointRadius'10,
  
'externalGraphic''${thumbnail}'
}); 
21-02-2012, 13:30,
#5
RE: GEOJSON Podmiana domyślnego markera + rotation
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
21-02-2012, 13:48,
#6
RE: GEOJSON Podmiana domyślnego markera + rotation
Zdefiniowałeś obiekt klasy style, a w parametrach dodałeś nieistniejący obiekt klasy Stylemap

http://docs.openlayers.org/library/featu...le-objects
21-02-2012, 14:04,
#7
RE: GEOJSON Podmiana domyślnego markera + rotation
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                    
                });
21-02-2012, 14:55,
#8
RE: GEOJSON Podmiana domyślnego markera + rotation
zmieniłeś, ale nie odkomentowałeś
21-02-2012, 15:07, (Ten post był ostatnio modyfikowany: 21-02-2012, 15:07 {2} przez BIMSON.)
#9
RE: GEOJSON Podmiana domyślnego markera + rotation
(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.
21-02-2012, 15:17,
#10
RE: GEOJSON Podmiana domyślnego markera + rotation
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.


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  genrowanie geojson z postgresa Odoakr 0 18 571 19-01-2012, 16:49
Ostatni post: Odoakr

Skocz do: