Odpowiedz 
 
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 AM (Ten post był ostatnio modyfikowany: 21-02-2012 09:46 AM przez BIMSON.)
Post: #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
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 10:10 AM
Post: #2
RE: GEOJSON Podmiana domyślnego markera + rotation
Wszystko jest tu:
http://docs.openlayers.org/library/feature_styling.html
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 12:33 PM
Post: #3
RE: GEOJSON Podmiana domyślnego markera + rotation
(21-02-2012 10:10 AM)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]);
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 01:15 PM
Post: #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}'
}); 
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 01:30 PM
Post: #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
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 01:48 PM
Post: #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
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 02:04 PM
Post: #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                    
                });
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 02:55 PM
Post: #8
RE: GEOJSON Podmiana domyślnego markera + rotation
zmieniłeś, ale nie odkomentowałeś
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 03:07 PM (Ten post był ostatnio modyfikowany: 21-02-2012 03:07 PM przez BIMSON.)
Post: #9
RE: GEOJSON Podmiana domyślnego markera + rotation
(21-02-2012 02:55 PM)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.
Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
21-02-2012, 03:17 PM
Post: #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.
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Zacytuj ten post w odpowiedzi
Odpowiedz 


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  genrowanie geojson z postgresa Odoakr 0 12 216 19-01-2012 04:49 PM
Ostatni post: Odoakr

Skocz do: