/// /// declare namespace GoogleAppsScript { namespace Maps { /** * An enum representing the types of restrictions to avoid when finding directions. */ enum Avoid { TOLLS, HIGHWAYS, } /** * An enum representing the named colors available to use in map images. */ enum Color { BLACK, BROWN, GREEN, PURPLE, YELLOW, BLUE, GRAY, ORANGE, RED, WHITE, } /** * Allows for the retrieval of directions between locations. * The example below shows how you can use this class to get the directions from Times Square to * Central Park, stopping first at Lincoln Center, plot the locations and path on a map, and send * the map in an email. * * // Get the directions. * var directions = Maps.newDirectionFinder() * .setOrigin('Times Square, New York, NY') * .addWaypoint('Lincoln Center, New York, NY') * .setDestination('Central Park, New York, NY') * .setMode(Maps.DirectionFinder.Mode.DRIVING) * .getDirections(); * var route = directions.routes[0]; * * // Set up marker styles. * var markerSize = Maps.StaticMap.MarkerSize.MID; * var markerColor = Maps.StaticMap.Color.GREEN * var markerLetterCode = 'A'.charCodeAt(); * * // Add markers to the map. * var map = Maps.newStaticMap(); * for (var i = 0; i < route.legs.length; i++) { * var leg = route.legs[i]; * if (i == 0) { * // Add a marker for the start location of the first leg only. * map.setMarkerStyle(markerSize, markerColor, String.fromCharCode(markerLetterCode)); * map.addMarker(leg.start_location.lat, leg.start_location.lng); * markerLetterCode++; * } * map.setMarkerStyle(markerSize, markerColor, String.fromCharCode(markerLetterCode)); * map.addMarker(leg.end_location.lat, leg.end_location.lng); * markerLetterCode++; * } * * // Add a path for the entire route. * map.addPath(route.overview_polyline.points); * * // Send the map in an email. * var toAddress = Session.getActiveUser().getEmail(); * MailApp.sendEmail( * toAddress, * 'Directions', * 'Please open: ' + map.getMapUrl() + '&key=YOUR_API_KEY', { * htmlBody: 'See below.
', * inlineImages: { * mapImage: Utilities.newBlob(map.getMapImage(), 'image/png') * } * } * ); * * See also * * Google Directions API */ interface DirectionFinder { addWaypoint(latitude: number, longitude: number): DirectionFinder; addWaypoint(address: string): DirectionFinder; clearWaypoints(): DirectionFinder; getDirections(): any; setAlternatives(useAlternatives: boolean): DirectionFinder; setArrive(time: Base.Date): DirectionFinder; setAvoid(avoid: string): DirectionFinder; setDepart(time: Base.Date): DirectionFinder; setDestination(latitude: number, longitude: number): DirectionFinder; setDestination(address: string): DirectionFinder; setLanguage(language: string): DirectionFinder; setMode(mode: Mode): DirectionFinder; setOptimizeWaypoints(optimizeOrder: boolean): DirectionFinder; setOrigin(latitude: number, longitude: number): DirectionFinder; setOrigin(address: string): DirectionFinder; setRegion(region: string): DirectionFinder; } /** * A collection of enums used by DirectionFinder. */ interface DirectionFinderEnums { Avoid: typeof Avoid; Mode: typeof Mode; } /** * Allows for the sampling of elevations at particular locations. * The example below shows how you can use this class to determine the highest point along the route * from Denver to Grand Junction in Colorado, plot it on a map, and save the map to Google Drive. * * // Get directions from Denver to Grand Junction. * var directions = Maps.newDirectionFinder() * .setOrigin('Denver, CO') * .setDestination('Grand Junction, CO') * .setMode(Maps.DirectionFinder.Mode.DRIVING) * .getDirections(); * var route = directions.routes[0]; * * // Get elevation samples along the route. * var numberOfSamples = 30; * var response = Maps.newElevationSampler() * .samplePath(route.overview_polyline.points, numberOfSamples) * * // Determine highest point. * var maxElevation = Number.MIN_VALUE; * var highestPoint = null; * for (var i = 0; i < response.results.length; i++) { * var sample = response.results[i]; * if (sample.elevation > maxElevation) { * maxElevation = sample.elevation; * highestPoint = sample.location; * } * } * * // Add the path and marker to a map. * var map = Maps.newStaticMap() * .addPath(route.overview_polyline.points) * .addMarker(highestPoint.lat, highestPoint.lng); * * // Save the map to your drive * DocsList.createFile(Utilities.newBlob(map.getMapImage(), 'image/png', 'map.png')); * * See also * * Google Elevation API */ interface ElevationSampler { sampleLocation(latitude: number, longitude: number): any; sampleLocations(points: number[]): any; sampleLocations(encodedPolyline: string): any; samplePath(points: number[], numSamples: Integer): any; samplePath(encodedPolyline: string, numSamples: Integer): any; } /** * An enum representing the format of the map image. * See also * * Google Static Maps API */ enum Format { PNG, PNG8, PNG32, GIF, JPG, JPG_BASELINE, } /** * Allows for the conversion between an address and geographical coordinates. * The example below shows how you can use this class find the top nine matches for the location * "Main St" in Colorado, add them to a map, and then embed it in a new Google Doc. * * // Find the best matches for "Main St" in Colorado. * var response = Maps.newGeocoder() * // The latitudes and longitudes of southwest and northeast corners of Colorado, respectively. * .setBounds(36.998166, -109.045486, 41.001666,-102.052002) * .geocode('Main St'); * * // Create a Google Doc and map. * var doc = DocumentApp.create('My Map'); * var map = Maps.newStaticMap(); * * // Add each result to the map and doc. * for (var i = 0; i < response.results.length && i < 9; i++) { * var result = response.results[i]; * map.setMarkerStyle(null, null, i + 1); * map.addMarker(result.geometry.location.lat, result.geometry.location.lng); * doc.appendListItem(result.formatted_address); * } * * // Add the finished map to the doc. * doc.appendImage(Utilities.newBlob(map.getMapImage(), 'image/png')); * * See also * * Google Geocoding API */ interface Geocoder { geocode(address: string): any; reverseGeocode(latitude: number, longitude: number): any; reverseGeocode(swLatitude: number, swLongitude: number, neLatitude: number, neLongitude: number): any; setBounds(swLatitude: number, swLongitude: number, neLatitude: number, neLongitude: number): Geocoder; setLanguage(language: string): Geocoder; setRegion(region: string): Geocoder; } /** * Allows for direction finding, geocoding, elevation sampling and the creation of static map * images. */ interface Maps { DirectionFinder: DirectionFinderEnums; StaticMap: StaticMapEnums; decodePolyline(polyline: string): number[]; encodePolyline(points: number[]): string; newDirectionFinder(): DirectionFinder; newElevationSampler(): ElevationSampler; newGeocoder(): Geocoder; newStaticMap(): StaticMap; setAuthentication(clientId: string, signingKey: string): void; } /** * An enum representing the size of a marker added to a map. * See also * * Google Static Maps API */ enum MarkerSize { TINY, MID, SMALL, } /** * An enum representing the mode of travel to use when finding directions. */ enum Mode { DRIVING, WALKING, BICYCLING, TRANSIT, } /** * Allows for the creation and decoration of static map images. * * The example below shows how you can use this class to create a map of New York City's Theatre * District, including nearby train stations, and display it in a simple web app. * * // Create a map centered on Times Square. * var map = Maps.newStaticMap() * .setSize(600, 600) * .setCenter('Times Square, New York, NY'); * * // Add markers for the nearbye train stations. * map.setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.RED, 'T'); * map.addMarker('Grand Central Station, New York, NY'); * map.addMarker('Penn Station, New York, NY'); * * // Show the boundaries of the Theatre District. * var corners = [ * '8th Ave & 53rd St, New York, NY', * '6th Ave & 53rd St, New York, NY', * '6th Ave & 40th St, New York, NY', * '8th Ave & 40th St, New York, NY' * ]; * map.setPathStyle(4, Maps.StaticMap.Color.BLACK, Maps.StaticMap.Color.BLUE); * map.beginPath(); * for (var i = 0; i < corners.length; i++) { * map.addAddress(corners[i]); * } * // All static map URLs require an API key. * var url = map.getMapUrl() + "&key=YOUR_API_KEY"; * * See also * * Google Static Maps API */ interface StaticMap { addAddress(address: string): StaticMap; addMarker(latitude: number, longitude: number): StaticMap; addMarker(address: string): StaticMap; addPath(points: number[]): StaticMap; addPath(polyline: string): StaticMap; addPoint(latitude: number, longitude: number): StaticMap; addVisible(latitude: number, longitude: number): StaticMap; addVisible(address: string): StaticMap; beginPath(): StaticMap; clearMarkers(): StaticMap; clearPaths(): StaticMap; clearVisibles(): StaticMap; endPath(): StaticMap; getAs(contentType: string): Base.Blob; getBlob(): Base.Blob; getMapImage(): Byte[]; getMapUrl(): string; setCenter(latitude: number, longitude: number): StaticMap; setCenter(address: string): StaticMap; setCustomMarkerStyle(imageUrl: string, useShadow: boolean): StaticMap; setFormat(format: string): StaticMap; setLanguage(language: string): StaticMap; setMapType(mapType: string): StaticMap; setMarkerStyle(size: string, color: string, label: string): StaticMap; setMobile(useMobileTiles: boolean): StaticMap; setPathStyle(weight: Integer, color: string, fillColor: string): StaticMap; setSize(width: Integer, height: Integer): StaticMap; setZoom(zoom: Integer): StaticMap; } /** * A collection of enums used by StaticMap. */ interface StaticMapEnums { Color: typeof Color; Format: typeof Format; MarkerSize: typeof MarkerSize; Type: typeof Type; } /** * An enum representing the type of map to render. * See also * * Google Static Maps API */ enum Type { ROADMAP, SATELLITE, TERRAIN, HYBRID, } } } declare var Maps: GoogleAppsScript.Maps.Maps;