Permalänk
Medlem

Karttjänst: Flex vs Ajax

Hej, jag ska bygga en online karta för ett mindre bostadsområde (ca 3 km²).
Kartan behöver inte innehålla mer än just detta område och skall ha ritad grafik, inte flygfoto. Husen bör ha godtycklig igenkänningsfaktor men de behöver inte vara för exakta. För varje hus ska jag bygga dynamisk datahantering så att varje hushåll kan logga in och fylla i info om sig själva. Denna info ska dyka upp i en liten ruta när man klicka på respektive hus.

Kartan behöver en zoom samt panning och det skall gå att uppdatera befintliga hus (ändra lite på formen) eller lägga till helt nya hus (ett bygge har påbörjats och dessa nya hus skall dyka upp under nästa år). Detsamma gäller för vägar och skogspartier. Dessutom är fler-browser kompabilitet ett måste.

Jag hoppas att denna beskrivning ger en bild av vad jag försöker åstadkomma.
Helst skulle jag ha varit väldigt duktig på Ajax eller Flex för då hade jag kunnat avgöra metod själv men jag är inte vass på någondera (dock mångårig programmerare) samt har för lite tid att göra småskaliga test med båda metoderna. Vilken metod tror ni lämpar sig bäst för ändamålet?

Det som lockar med Ajax är hastigheten hos Google Maps men kan jag bygga min karta genom att utgå från deras API eller åker jag på att bygga mitt eget Google Maps och isåfall, är det inte en world of pain med tanke på fler-browser kompabilitet? Låt säga att jag utgår från Google Maps, kan jag bygga en stand-alone karta eller måste jag integrera min mini-karta i deras karta?
Ett annat plus är att jag är mycket mer bevandrad inom JavaScript än ActionScript.

Det som lockar med Flex är att man endast kräver av användaren att hon har Flash installerat och sen behöver man inte bry sig om browser, OS, etc. Det som avskräcker med Flex är bara att jag aldrig gjort någon databashantering i Flex och vet inte hur pass enkelt detta är jämfört med PHP/MySQL/MS SQL som jag är van.

Visa signatur

Carpe Cerevisi!

Permalänk
Medlem

använder du google maps så får du ju tillgång till allt i deras api, men blir samtidigt troligen låst till deras karta. Det går säkert att hacka sig runt, men det är nog ingen bra idé.

Egentligen ser jag inte vad du behöver ajax till - räcker det inte bra med javascript? Grejen med ajax är ju att man på ett transparent sätt kommunicerar med servern (utan att ladda om webbsidan), och då undrar jag - behöver man verkligen kommunicera med servern löpande?

Skitkul projekt iaf! Jag pysslar själv med en del karttjänster av blandade slag och jag hoppas jag får se ditt projekt när det börjar ta form!

Permalänk
Medlem

Det var rätt mycket att bita i!
Var ska man börja?

Google API är bra men deras karta saknar ju helt byggander. Att få in byggander på den kartan samt att byggnaderna skall följa med panorering/zoomin samt vara klickbara objekt är inte riktigt lätt alls.
Eftersom du var duktig på JavaScript skulle du kunna använda ett färdigt JavaScript bibliotek för att kunna rita upp byggnader på kartbilden. Men lite mer jobb går det även att använda biblioteket för att rita in/ändra på figurer.
Kolla in : http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm

Annars är ju också SVG/VML bra när man vill "rita" i en webbläsare. Men då krävs plugin samt att VML endast funkar (bra) i IE5+.

Det som skulle underlätta mycket är tillgång till en kartserver av något slag. Då skulle du kunna använda tex. shapefiler eller liknande för att bygga upp kartan samt få lättare att bygga logik för kartobjekt i och med att du har olika kartlager.

Det finns en (hyffsat bra) gratis kartserver att rekomendera:
http://mapserver.gis.umn.edu/

Sedan finns andra alternativ genom att använda befintliga kartservrar ute på nätet. Det finns tex. många karttjänster som bygger på ESRI ArcIMS som man kan komma åt och kommunicera med. Men då bör man ha lite kolla på ArcIMS's XML språk (AXL eller den generella WMS specen). Har du tur kanske din kommun använder just ArcIMS själva eller genom Lantmäteriet. Då lär du säkert även kunna se alla inmätta hus.

Som sagt, få till en karta är inte det största problemet. Utan det är att i webbläsaren kunna editera och spara byggnadsgeometrier. Samma sak gäller att få in logiken att när du klickar i kartan var som helst i en byggnadskropp så skall byggnadsobjektet identifieras och data visas upp.

Att skapa/ändra/editera attributdata till varje byggnad är som du märker ditt minsta problem...

AJAX i sig löser inte problemet vad jag kan se.

Mitt förslag skulle nog ändå vara:
- Anävnd Google API:et.
- Symbolisera byggnaderna i Google kartan som punkter (dvs. x,y koordinater i typ wgs84). Dvs. skippa byggnader som ytor (polygon).
- Sätt ID på varje (byggnads)punkt.
- Till varje ID/byggnad kopplar du dina attribut i din databas. Dvs. data som användarna skall kunna ändra på.
- Bifoga utseendet på byggnaden, kopplat till ID, som en bifogad skiss. Exempelvis PDF/JPG/Word fil istället.
- Använder du Google API:et så får du ävan "MapTips" på köpet vilket betyder att användrna genom klick i kartan kan få info om byggnaderna (punkterna).

Skulle nog kunna skriva mer om det här. Men jag måste jobba också...
Lycka till. Intressant projekt. Få se hur det går.

(Funktioneliteten för att editera geometrier (vägar, skogar, byggnader etc) i en webbläsare är inte lätt. Dom stora 'drakarna' på GIS markanden tar rejält bra betalt för detta...)

Visa signatur

---

Permalänk
Medlem

Re: Karttjänst: Flex vs Ajax

Citat:

Ursprungligen inskrivet av klytus
Det som lockar med Flex är att man endast kräver av användaren att hon har Flash installerat och sen behöver man inte bry sig om browser, OS, etc. Det som avskräcker med Flex är bara att jag aldrig gjort någon databashantering i Flex och vet inte hur pass enkelt detta är jämfört med PHP/MySQL/MS SQL som jag är van.

Man kan inte skapa databaskopplingar osv. direkt i Flash. Det man gör är att skicka variabler med GET eller POST till ett serverside-script (PHP, ASP eller liknande) som returnerar XML eller plain-text som man sedan tolkar i Flashen och dynamiskt skapar text, movieclips osv. Backend-delen skiljer alltså inte mot om du skulle jobba med AJAX/JavaScript.