{ "metadata": { "name": "", "signature": "sha256:583e825c258d06f85ddedee1e31a550f57b842102b2fbdc2890365559c0d21e0" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Create a Google Maps widget" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.html import widgets\n", "from IPython.utils import traitlets" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define the Python component of the Google Maps widget." ] }, { "cell_type": "code", "collapsed": false, "input": [ "class GoogleMapsWidget(widgets.DOMWidget):\n", " _view_name = traitlets.Unicode('GoogleMapsView', sync=True)\n", " value = traitlets.Unicode(sync=True)\n", " description = traitlets.Unicode(sync=True)\n", " lat = traitlets.CFloat(0, help=\"Center latitude, -90 to 90\", sync=True)\n", " lng = traitlets.CFloat(0, help=\"Center longitude, -180 to 180\", sync=True)\n", " zoom = traitlets.CInt(0, help=\"Zoom level, 0 to ~25\", sync=True)\n", " bounds = traitlets.List([], help=\"Visible bounds, [W, S, E, N]\", sync=True)\n", " \n", " def __init__(self, lng=0.0, lat=0.0, zoom=2):\n", " self.lng = lng\n", " self.lat = lat\n", " self.zoom = zoom\n", " \n", " def addLayer(self, image, vis_params, name=None, visible=True):\n", " mapid = image.getMapId(vis_params)\n", " self.send({'command':'addLayer', 'mapid': mapid['mapid'], 'token': mapid['token'], 'name': name, 'visible': visible})\n", " \n", " def center(self, lng, lat, zoom=None):\n", " self.send({'command': 'center', 'lng': lng, 'lat': lat, 'zoom': zoom})" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define the Javascript code for the widget.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%javascript\n", "\n", "require([\"widgets/js/widget\"], function(WidgetManager){\n", " var maps = [];\n", " \n", " // Define the GoogleMapsView\n", " var GoogleMapsView = IPython.DOMWidgetView.extend({\n", " \n", " render: function() {\n", " // Resize widget element to be 100% wide\n", " this.$el.css('width', '100%');\n", "\n", " // iframe source; just enough to load Google Maps and let us poll whether initialization is complete\n", " var src='' +\n", " '' +\n", " 'google.maps.event.addDomListener(window,\"load\",function(){ready=true});' +\n", " '' +\n", " '';\n", " \n", " // Create the Google Maps container element.\n", " this.$iframe = $('