After playing with version 3 of the Google Maps API and trying to convert my ScratchPad application, I’m pretty impressed. It’s a much more consistent API than version 2 and provides quite a few new features. But one thing is for sure, converting an application from version 2 to version 3 will be a big chunk of work. Pretty much every line will need rewriting.
So I thought I’d provide a little crib sheet to help people who are trying to upgrade. I don’t claim that this list is in any way complete. I’ll update it as I find more things out, but even so I only intend it to be a pointer to the right class/method to use. In most cases the way methods or classes are used has also changed. If you have any other information to add, please add a comment.
| Google Maps version 2 | Google Maps version 3 |
| GMap2 class | google.maps.Map class |
| GMap2.disableDoubleClickZoom() | MapOptions.disableDoubleClickZoom:true passed to Map constructor or Map.setOptions() |
| GMap2.getDragObject().setDraggableCursor() | MapOptions.draggableCursor passed to Map constructor or Map.setOptions() |
| GMap2.addOverlay() | Call setMap() on the layer to add |
| GMap2.clearOverlays() | ??? |
| GMap2.removeOverlay() | Call setMap(null) on the layer to remove |
| GLatLng class | google.maps.LatLng class |
| GMarker class | google.maps.Marker class |
| GMarker.bindInfoWindowHtml() | google.maps.InfoWindow class, but you need to manually open the info window using google.maps.event.addListener(marker, 'click', function () { |
| GEvent.bind(), GEvent.addListener | google.maps.event.addListener(), although it doesn’t seem possible to bind the event to particular object instance (where the keyword this can be used in the event handler) |
| GEvent.removeListener() | google.maps.event.removeListener() |
| GNavLabelControl class | ??? |
| GAdsManager class | ??? |
| GGeoXml class | google.maps.KmlLayer class |
| GGeoXml.load event | ??? |
| GGeoXml.getDefaultCenter() | KmlLayer.getDefaultViewport().getCenter() |
| GStreetviewOverlay class | This is now integrated into the map, pass streetViewControl: true into MapOptions to make it appear |
| GClientGeocoder class | google.maps.Geocoder class |
| GClientGeocoder.getLatLng() | Geocoder.geocode() |
| GPolyline class | google.maps.Polyline class |
| GPolyline.getLength() | There is no direct replacement, but this forum post discusses how to implement something similar yourself. |
| GPolyline.getVertexCount() | Polyline.getPath().length() |
| GDirections class | google.maps.DirectionsService class to query for directions, google.maps.DirectionsRenderer class to render them on a map |
| GDirections.load() | DirectionService.route() |
| GDirections.loadFromWaypoints() | DirectionsRequest.waypoints property |
| GDirections.clear() | No equivalent |
| GTrafficOverlay class | google.maps.TrafficLayer class |
| GLayer class | ??? – This is in the API issues database, star it if you want it implemented |
| GTileLayerOverlay class | ??? |
No comments:
Post a Comment