{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from __future__ import print_function\n", "\n", "from ipyleaflet import (\n", " Map,\n", " Marker, MarkerCluster,\n", " TileLayer, ImageOverlay,\n", " Polyline, Polygon, Rectangle, Circle, CircleMarker,\n", " GeoJSON,\n", " DrawControl\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Map" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "center = [34.6252978589571, -77.34580993652344]\n", "zoom = 10" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m = Map(default_tiles=TileLayer(opacity=1.0), center=center, zoom=zoom)\n", "m" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.interact(zoom=(5,10,1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.remove_layer(m.default_tiles)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.add_layer(m.default_tiles)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.model_id" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(m.center)\n", "print(m.zoom)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Marker" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mark = Marker(location=m.center)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mark.visible" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m += mark" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mark.interact(opacity=(0.0,1.0,0.01))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mark.visible" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mark.visible = False" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Marker Cluster" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When we have many markers on a map, it is helpful to cluster them together at high zoom levels. First, we create a small grid of markers." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "xscale = 5\n", "yscale = 10\n", "\n", "x = [m.center[0] + i*xscale*.05 for i in (-1,0,1)]\n", "y = [m.center[1] + i*yscale*.05 for i in (-1,0,1)]\n", "\n", "from itertools import product\n", "locations = product(x, y)\n", "markers = [Marker(location=loc) for loc in locations]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then we add them all to a `MarkerCluster`, which automatically clusters them at appropriate zoom levels." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "marker_cluster = MarkerCluster(markers = markers)\n", "m+=marker_cluster" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.remove_layer(marker_cluster)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Image Overlay" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "io = ImageOverlay(url='http://ipython.org/_static/IPy_header.png', bounds=m.bounds)\n", "m.add_layer(io)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.remove_layer(io)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polyline" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pl = Polyline(locations=m.bounds_polygon)\n", "m += pl" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pl.fill_color = '#F00'\n", "pl.fill_opacity = 1.0" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m -= pl" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polygon" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pg = Polygon(locations=m.bounds_polygon, weight=3,\n", " color='#F00', opacity=0.8, fill_opacity=0.8,\n", " fill_color='#0F0')\n", "m += pg" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m -= pg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Rectangle" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "r = Rectangle(bounds=m.bounds, weight=10, fill_opacity=0.0)\n", "m += r" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m -= r" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Circle" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "c = Circle(location=m.center)\n", "m.add_layer(c)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "c.interact(weight=(0,10,1), opacity=(0.0,1.0,0.01))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "c.model_id" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.remove_layer(c)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "c.close()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.layers" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "c2 = Circle(location=m.center, radius=30, weight=1,\n", " color='#F00', opacity=1.0, fill_opacity=1.0,\n", " fill_color='#0F0')\n", "m.add_layer(c2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "c2.model_id" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.remove_layer(c2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "c2.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## CircleMarker" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cm = CircleMarker(location=m.center, radius=30, weight=2,\n", " color='#F00', opacity=1.0, fill_opacity=1.0,\n", " fill_color='#0F0')\n", "m.add_layer(cm)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cm.model_id" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "m.remove_layer(cm)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "cm.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple Circles" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "circles = []\n", "for pos in m.bounds_polygon:\n", " c = Circle(location=pos, radius=1000)\n", " circles.append(c)\n", " m.add_layer(c)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for c in circles:\n", " m.remove_layer(c)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" }, "widgets": { "state": {}, "version": "1.0.0" } }, "nbformat": 4, "nbformat_minor": 2 }