/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.maps.sample.hellomaps.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.geocode.DirectionQueryOptions;
import com.google.gwt.maps.client.geocode.DirectionResults;
import com.google.gwt.maps.client.geocode.Directions;
import com.google.gwt.maps.client.geocode.DirectionsCallback;
import com.google.gwt.maps.client.geocode.DirectionsPanel;
import com.google.gwt.maps.client.geocode.Placemark;
import com.google.gwt.maps.client.geocode.Route;
import com.google.gwt.maps.client.geocode.StatusCodes;
import com.google.gwt.maps.client.geocode.Waypoint;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import java.util.List;
/**
* This demo extends the simple demo, by adding waypoints to the requested
* directions.
*
* For full documentation of the various objects, methods and events in the
* Directions API package, consult the API Reference at {@link
* "http://code.google.com/apis/maps"}
*/
public class RoutedDirectionsDemo extends MapsDemo {
private static final LatLng ATLANTA = LatLng.newInstance(33.7814790,
-84.3880580);
// Points of interest along the map.
private static final LatLng STONE_MOUNTAIN_PARK = LatLng.newInstance(
33.80653802509606, -84.15252685546875);
// Cyclorama
private static final LatLng CYCLORAMA = LatLng.newInstance(
33.741185330333956, -84.35834884643555);
// Georgia Aquarium
private static final LatLng GEORGIA_AQUARIUM = LatLng.newInstance(
33.761443931868925, -84.39432263374329);
// Underground Atlanta
private static final LatLng UNDERGROUND_ATLANTA = LatLng.newInstance(
33.75134645137294, -84.39026713371277);
// The Dwarf House Restaurant in Hapeville
private static final String DWARF_HOUSE = "461 N Central Ave Hapeville, GA";
private static HTML descHTML = null;
private static final String descString = "<p>Displays a map centered on"
+ " Atlanta, GA USA</p>"
+ " <p>Queries the Google Directions service and displays a polyline,"
+ " markers on the map, and textual directions on the right. The"
+ " directions are for a leisurely route from Midtown Atlanta to the"
+ " Atlanta Airport through various waypoints.</p>\n";
private static Waypoint waypoints[] = {
new Waypoint("10 10th St NE, Atlanta, GA 30309"), // Midtown Atlanta
new Waypoint(GEORGIA_AQUARIUM), //
new Waypoint(UNDERGROUND_ATLANTA), //
new Waypoint(CYCLORAMA), //
new Waypoint(STONE_MOUNTAIN_PARK), //
new Waypoint(DWARF_HOUSE), //
new Waypoint("N Terminal Pkwy, Atlanta, GA 30320") // The Airport
};
public static MapsDemoInfo init() {
return new MapsDemoInfo() {
@Override
public MapsDemo createInstance() {
return new RoutedDirectionsDemo();
}
@Override
public HTML getDescriptionHTML() {
if (descHTML == null) {
descHTML = new HTML(descString);
}
return descHTML;
}
@Override
public String getName() {
return "Routed Directions";
}
};
}
private MapWidget map;
public RoutedDirectionsDemo() {
HorizontalPanel hp = new HorizontalPanel();
map = new MapWidget(ATLANTA, 15);
map.setSize("400px", "480px");
map.setUIToDefault();
map.getElement().getStyle().setPropertyPx("margin", 15);
hp.add(map);
DirectionsPanel directionsPanel = new DirectionsPanel();
hp.add(directionsPanel);
directionsPanel.setSize("100%", "100%");
initWidget(hp);
DirectionQueryOptions opts = new DirectionQueryOptions(map,
directionsPanel);
// Create directions from Midtown Atlanta to the Airport with a *few*
// stops along the way.
Directions.loadFromWaypoints(waypoints, opts, new DirectionsCallback() {
public void onFailure(int statusCode) {
Window.alert("Failed to load directions: Status "
+ StatusCodes.getName(statusCode) + " " + statusCode);
}
public void onSuccess(DirectionResults result) {
GWT.log("Successfully loaded directions.", null);
// A little exercise of the route API
List<Route> routes = result.getRoutes();
for (Route r : routes) {
Placemark start = r.getStartGeocode();
GWT.log("start of route: " + start.getAddress(), null);
Placemark end = r.getEndGeocode();
GWT.log("end of route: " + end.getAddress(), null);
}
}
});
}
}