Google Map API Performance

June 30, 2009 § 2 Comments

I am summarizing a session on Google Map API Performance here. This help you to evaluate using Google Map for iphone app.

Google JavaScript Map API

The total sequence of loading the script and resources is about 4.6 sec on avg web. However, it takes 18 sec to load on Android and iphone.

JavaScript library is 220 KB unzipped. It takes more than 4 sec to parse the API on iphone. Since engineers can’t reduce the codebase size after modularizing classes, Google map team decides to create Google Map API v3.

This v3 offers a few features – markers, infowindows, geocoding.

On v2 GMarker class is designed for features not for performance. Each marker is consisting of up to 5 divs. To show 10,000 GMarkers, you are loading 50,000 DOM nodes in the browser.

Google extends GOverlay class to create a custom lightweight marker. This MakerLight, overlay contains only 2 divs per marker.

Google Flash API is faster in rendering but it suffers from a slow DOM.


Google Wave Samples Gallery & Flash/Wave bridge javascript library

June 25, 2009 § Leave a comment

Google Wave is releasing Wave Samples Gallery where developers can submit your app with your developer profile, sample info and screen captures. You can browse app or filter by the language or API used.

Featured Wave app “Napkin” captures my attention. It is written in Adobe Flex. It includes a Flash/Wave bridge javascript library within the gadget wrapper and a Wave AS3 API for abstracting the External Interface calls to the bridge. Stub Wave API that allows for limited non-embedded testing of the Flex app through a simple implementation of Wave API.

Wave supported the following APIs:

  • Robots
  • Gadgets
  • Embed

Wave supports the following languages used.

  • Java
  • Python
  • JavaScript
  • ActionScript

Currently Wave Sandbox doesn’t support forgot password or your gmail account. You’ll get a unique acct. If you forget your password like myself, you would have to contact

Using Google Data API to create online store using Checkout

June 5, 2009 § Leave a comment

I found this tutorial on Google data API useful.

This tutorial shows how to use the Mashup Helper in order to create an online store with inventory stored in a Google Spreadsheet. The store will accept payments using Google Checkout.

Demo is here.

How to use Google Map with Objective-C Part I

May 24, 2009 § Leave a comment

You want to build an iphone app that open Google map. You would like to show the map in certain ways.

You can consider using Google Map API. Sometimes you would use Google Map Parameters rather than Google API where certain featurse are not supported in API eg Google map displaying driving directions.

It all starts with ( etc).


Exaction location can be specified as latitude and longitude in

1) decimal form



2) degrees, minutes and seconds

52 7 22.8N,2 27 21.6W

52 7 22.8,-2 27 21.6

3) degrees and minutes

52 7.38N,2 27.36W

52 7.38,-2 27.36

Any text added in parentheses () is displayed in the info window and sidebar in bold.


The words “to” and “from” cause the driving directions function to be activated.

The word “near” or “loc:” causes the local search function to be activated.

space-ampersand-space (use +%26+ or %20%26%20 in URLs, not +&+ or +&+ otherwise the ampersand gets treated as a separator) can be used between the names of two streets to specify an intersection.

A location can also be specified after an @, in decimal form (@52.123,-2.456). This gives a lower zoom level than using the same values without the at sign. Using this format interferes with other options of the query parameter. The @ sign instead of “near” or “loc:” tends to cause only a single business result to be displayed.To place a custom labeled marker at an arbitrary location,,-0.227721

The label can’t be a country name, or no marker will be shown; but it can be empty, when the co-ordinates will be used.

prefix the query with “sky:” to search KML content created for Sky, q=sky:Leo, designed for use with Google Sky and KML output.

near= Can be used as the location part of a query instead of putting the whole thing into q=.

g= a address/location, provides extra context for the q param

ll= Latitude,longitude of map centre – Note the order. Only decimal format is accepted.

If this is used without a query, then the map is centred at the point but no marker or info window is displayed.

sll= Latitude,longitude of the point from which the business search should be performed. You could use this to perform an off-centre busness search. Google use it so “link to this page” can record a map that has had the centre moved after performing a business search. When requesting a route map.getBounds().getSouthWest().toUrlValue() returns the same value uses.

spn= Approximate lat/long span. The zoom level will be adjusted to fit if there’s no z= parameter. Use this Mapki tool to find a lat and long.

sspn= Stands for “Screen span”. Map bounds dimensions in Degrees, to calculate this use:
newGLatLng(map.getBounds().getNorthEast().lat() − map.getBounds().getSouthWest().lat(),map.getBounds().getNorthEast().lng() − map.getBounds().getSouthWest().lng()).toUrlValue()

latlng= This is a weird one. It takes three numbers separated by commas. The first two numbers (presumably representing latitude and longitude multiplied by 1000000) are ignored. The third number seems to be a Google internal “Company ID” number for a particular business. E.g. latlng=0,0,14944637421527611642 represents Blackpool Community Church. Specifying this parameter performs a Google Search for pages that reference that business, and displays a tiny map. Other parameters, in particular q=, must have valid contents (but need not relate to the target business) for this to work.

cid= Similar to latlng, but generating a different map size. It takes three numbers separated by commas. The first two numbers (presumably representing latitude and longitude multiplied by 1000000) are ignored. The third number seems to be a Google internal “Company ID” number for a particular business. E.g. cid=0,0,14944637421527611642 represents Blackpool Community Church. Specifying this parameter displays a large map of the identified company location. Other parameters, in particular q=, must have valid contents (but need not relate to the target business) for this to work.

geocode= Concatination of “geocode” encoded values for waypoints used in Directions. Appears when waypoints in “from: blah to: blah” are potentially ambigious. E.g, &saddr=Were+St&daddr=Kings+Hwy+to:Princes+Hwy+to:Princes+Hwy+to:Monaro+Hwy+to:-35.43483,149.112175&hl=en&geocode=FbBP4_0dSEXjCA%3BFWIj4_0dpMDtCA%3BFe4g3_0dunvzCA%3BFfBf0P0dEGzuCA%3BFSoL1_0dtorjCA%3B
is the end result from joining the “geocode” values for each waypoint with %3B.

Map Display

  • t= Map Type. The available options are “m” map, “k” satellite, “h” hybrid, “p” terrain.
  • z= Sets the zoom level.
  • layer= Activates overlays. Current options are “t” traffic, “c” street view. Append (e.g. layer=tc) for simultaneous.
  • view= Can be used to select text view (view=text) or the normal map view (view=map).


  • saddr= Source address. Use this when asking for driving directions.
Any text added in brackets is displayed in the sidebar in bold.
  • daddr= Destination address(es). Use this when asking for driving directions
Any text added in brackets is displayed in the sidebar in bold.
“+to:” clauses can be appended to the destination to request multiple destination routing, like this daddr=Blackpool+to:Manchester+to:Leeds
Text in brackets can also be added to the “+to:” clauses.
  • mra ?? what does mean this route parameter? known possible values=dm, dpe, cc, ls, …
  • mrcr ?? what does mean this route parameter? known possible values=0
  • mrsp ?? what does mean this route parameter? known possible values=0,1
  • mrad= Additional destination address.
If you’ve got three points in your trip you can use saddr=, daddr= and mrad= instead of “+to:” clauses.
  • dirflg Route type.
    • dirflg=h Switches on “Avoid Highways” route finding mode.
    • dirflg=t Switches on “Avoid Tolls” route finding mode.
    • dirflg=r Switches on “Public Transit” – only works in some areas.
    • dirflg=w Switches to walking directions – still in beta.
  • via= Comma separated list of intermediate addresses for directions, that should be ‘via points’. In the example via=1,3 addresses 1 and 3 will be via points without their own entry in the sidebar. The start (0), the 2nd intermediate (2) and the end (4) will be full addresses.
  • doflg= Distance Units. (Defaults to prevalent units in country of origin.)
    • doflg=ks ??
    • doflg=ptk Outputs directions in metric (km).
    • doflg=ptm Outputs directions in imperial (miles).

Street View

  • cbll= Latitude,longitude for Street View.
  • cbp= Street View window that accepts 5 parameters:
    1. Street View/map arrangement, 11=upper half Street View and lower half map, 12=mostly Street View with corner map
    2. Rotation angle/bearing (in degrees)
    3. Tilt angle, -90 (straight up) to 90 (straight down)
    4. Zoom level, 0-2
    5. Pitch (in degrees) -90 (straight up) to 90 (straight down), default 5
  • panoid= Panorama ID. The ID of the current nearby panorama object. Panorama objects ids are used in the little arrows you can click on in Street View to move you to the next object/property. Eg panoid=eTnPNGoy4bxR9LpjjfFuOw

Tool to find lat and long


Converting Google Spreadsheet to JSON, XML, and MySQL

May 17, 2009 § Leave a comment

This is a very useful article describing how to create and store dataset on Google Spreadsheet. Using a customized gadget, the data will be converted into your choice of JSON, or XML, or MySQL statement.

This simple data conversion will allow you to take advantages of Google Spreadsheet features to organize, sort and modify the data. Then you are free to extract the data into a more useful format for mashup.

The article is here.

Jaiku Engine

April 4, 2009 § Leave a comment

Jaiku is now an open source project at Google Code Project. JaikuEngine is a social microblogging platform that runs on AppEngine. JaikuEngine powers You can access API here.

Where Am I?

You are currently browsing the Google API category at Web Builders.