Homework 11, Due Friday, 5/8 by midnight via ICON


Overview
Combine HW10 with use of the Google Maps Static API to produce a python program that create and display map of shortest paths between cities.

In HW10 you computed shortest paths and then output a KML file that could be read/processed by Google Maps, Google Earth and other mapping systems. In this homework your python program will go a little further - actually creating the maps from the data.

Part 1 (10 points)
Create a function "makeShortestPathMap(cityName1, cityName2, graph)" that creates and displays a (JES) picture object showing, on a Google Map, the shortest path between the two given cities. The map should also include markers at each of the cities on the path between the two endpoints. The image should also show the length of each edge on the path. In addition, add, somewhere on the image, some text indicating what the map shows. e.g. "The shortest path between Timbuktu and Iowa City is xxx miles long."

Part 2 (2 points) Create a function "addCityToGraph(cityName, graph)" that takes queries Google for the location (latitude and longitude) of the given city, and also queries Google for the distance between this new city and each of the other cities in your graph. Then, add this city and the corresponding edges to your graph so that you'll be able to make queries involving the new city.

Part 3 (2 points) Use Google App Engine to make the functionality of Parts 1 and 2 accessible in a Web application where users can type city names into input boxes, click a "submit" button and then see the new map displayed. Steps: (1) learn how to use App Engine, (2) do the Getting Started tutorial up through "Hello, World!" - doesn't take long, and (3) use these three files to make HW11 an interactive web application. (After downloading and putting in an App Engine folder, you'll need to rename indextemp.html to index.html and combine your HW11 code with the code hw11part3help.py). This might be mysterious but it doesn't take much work - for help, ask me!

What to submit.
As usual, submit all of your source code and a README file.