Der Zweifel aus der Bärenhöhle kann beseitigt werden: die Karte zeigt die Bevölkerungsdichte auf der Erde. Genauer gesagt, ist es nicht die Bevölkerungsdichte, sondern die Dichte der Orte. Deutlich ist die Einsamkeit der Wüsten sichtbar. Nun gibt es links oben dieses Eingangsfeld. Dort kann der geduldige Leser beispielsweise Markkleeberg eintragen und wird feststellen, dass es im Gegensatz zu Petersburg nur einen Ort mit diesem Namen gibt.
Solche kleinen GeoApps zu bauen ist wirklich keine Zaubererei. Zu den Strategien von Goggle (wie auch von Apple) gehört die perfekte Dokumentation. Es gibt natürlich die API-Beschreibung, aber auch Beispielsammlungen, ¬Artikel und Tutorials. So kann jeder seinen Weg zum Erkenntnisgewinn finden.
Bei der Arbeit mit den FusionTables fallen einige Sachen auf: die Begrenzung auf 100MB Upload stimmt nicht – das Quota wird schon bei weniger Megas erreicht. Für das Trainingsprojekt habe ich die ca. 8 Mio. Datensätze in Stücken zu Millionen portioniert. Der Upload klappt jetzt. Nach dem Upload kommt der Import. Leider bricht das ganze Procedere zuweilen ab. Und es gibt keine Fehlermeldung. Das macht es schon deswegen uncharmant, weil immer große Wartezeiten damit verbunden sind.


Nett ist auch nebige Idee. Sieht pfiffig aus und hat was. Für den Designer war das einfach: im Photoshop gibte s sicher eine Funktion, die das Umfluten des Bildes macht. Im Web sind alle Elemente rechteckig. Das Bild von dem Herrn ist natürlich größer und der Browser kann nicht „wissen“, dass er auf die durchsichtige Fläche schreiben darf. Wohlgemerkt: wir reden hier von einem Redaktionssystem: Bild, Text und Textgröße sind veränderlich. Und sicherlich gibt es eine unehrenhafte Gummilösung. Sie könnte beispielsweise darin liegen, den Text nicht als solchen zu erfassen, sondern einfach als Bild von einem Text. Das wäre nicht nur für Sehbehinderte und fürs Googleranking fatal.
Bei genügend Einsatz von Suchenergie findet sich dann dennoch eine flashvermeidente Lösung von ¬Addy Osmani:
Wunderbar – was heute so geht. Auch schön: der Designer hat rechts oben ein Suchfeld hingemalt. Nur: die angepeilte Promotionseite ist recht grafiklastig und hat außer dem Impressum und kleinen Bildunterschriften keinerlei Text. Es werscheint sinnfrei und mutet einem Potemkinschen Dorfe an.
Eine besondere (selber gestellte) Herausforderung wird es sein, einen ¬Autocompleter zu bauen, der nicht wie gewöhnlich einen Ajax-Request baut, sondern die Google-API bzw. ¬JSONP zur Ansprache der FusionTable nutzt.
In Wahrheit ist obige Karte nur eine Studie, was alles so mit dieser FusionTable geht. Das schönste daran sind eigentlch die schnellen Suchfilter und ihre Darstellung. Das Allerbeste von diesen Fusions Tables ist die extrem kurze Entwicklungszeit. Obige Karte ist in weniger als zwanzig Minuten entstanden – etwas mehr brauchte der Import der Dummydaten. Diese Tatsache sollte ein Auftraggeber vielleicht nicht wissen …
Es gibt auch einige Einschränkungen: solche SQL-Filter wie die Suche nach Teiltexten (
LIKE) gehen nicht. Die ganze Chause ist auch nicht wirklich definiert – das heißt, nach administrativen Datenänderungen ist das auch nach Minuten noch nicht sichtbar. Die Gewschwindigkeit wird mit Caching erkauft. Beispielsweise liefert google.maps.FusionTablesLayer() über 20000 Punkte. Der gleiche Zugriff mittels REST oder der ¬Visualization-Lib von Google liefert zur Zeit keine Resultate. Das klingt nach verschiedenen Isolation-Levels.Wie das immer so bei Google ist, gibt es auch in dieser Welt zwei Heransgehensweisen. Im einfachen Fall wird einfach nur eine SQL-Abfrage mit einem Layer verbunden und alles geht ganz fix, allerdings nur in der vorgefertigten Form der roten Punkte usw.
Willst Du mehr, musst Du mehr tun. Es lässt sich auch ganz gezielt via Javascript eine Abfrage absetzen. In einer definierten Callbackfunktion muss sich der geneigte Programmierer dann selbst ums Rendern kümmern. Dann ist dann wieder alles möglich. In einem ¬Standardbeispiel sollte auch dem Dümmsten ein Licht aufgehen. Etwas Plietschere können sich in der ¬Doku vertiefen.

![[]](/rainer/img/indicator.gif)
