A PHP app that renders static maps from tile hosting services
PHP
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is even with aaronpk:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
images
include
.gitignore
README.md
files.php
img.php
index.php

README.md

Static Maps API

Parameters

Parameters can be sent in either the query string or in the POST body.

  • zoom - optional - Set the zoom level for the map. If not specified, a zoom level will be chosen that contains all markers on the map.
  • maxzoom - optional - When a zoom level is chosen automatically, this sets an upper limit on the zoom level that will be chosen. Useful if you know your basemaps don't have imagery past a certain zoom level.
  • width - default 300 - Width in pixels of the final image
  • height - default 300 - Height in pixels of the final image
  • basemap - default "streets" - Select the basemap
  • attribution - default "esri" - "esri" or "none" - If you add attribution on the image in some other way, you can set this to "none" to hide the Esri logo
  • latitude - optional - Latitude to center the map at. Not needed if using the location parameter, or if specifying one or more markers.
  • longitude - optional - Longitude to center the map at.
  • location - optional - Free-form text that will be geocoded to center the map. Not needed if specifying a location with the latitude and longitude parameters, or if a marker is specified.
  • marker[] - Specify one or more markers to overlay on the map. Parameters are specified as: key:value;. See below for the full list of parameters.
  • path[] - Specify one or more paths to draw on the map. See below for the full list of parameters to draw a path.

Markers

  • location - Free-form text that will be geocoded to place the pin
  • lat - If a location is not provided, you can specify the location with the lat and lng parameters.
  • lng - See above
  • icon - Icon to use for the marker. Must choose one of the icons provided in this library, or specify a full URL to a png image. If an invalid icon is specified, the marker will not be rendered.

Built-In Marker Images

  • dot-large-blue dot-large-blue
  • dot-large-gray dot-large-gray
  • dot-large-green dot-large-green
  • dot-large-orange dot-large-orange
  • dot-large-pink dot-large-pink
  • dot-large-purple dot-large-purple
  • dot-large-red dot-large-red
  • dot-large-yellow dot-large-yellow
  • dot-small-blue dot-small-blue
  • dot-small-gray dot-small-gray
  • dot-small-green dot-small-green
  • dot-small-orange dot-small-orange
  • dot-small-pink dot-small-pink
  • dot-small-purple dot-small-purple
  • dot-small-red dot-small-red
  • dot-small-yellow dot-small-yellow
  • fb fb
  • google google
  • large-blue-blank large-blue-blank
  • large-blue-cutout large-blue-cutout
  • large-gray-blank large-gray-blank
  • large-gray-cutout large-gray-cutout
  • large-gray-user large-gray-user
  • large-green-blank large-green-blank
  • large-green-cutout large-green-cutout
  • large-orange-blank large-orange-blank
  • large-orange-cutout large-orange-cutout
  • large-pink-blank large-pink-blank
  • large-pink-cutout large-pink-cutout
  • large-purple-blank large-purple-blank
  • large-purple-cutout large-purple-cutout
  • large-red-blank large-red-blank
  • large-red-cutout large-red-cutout
  • large-yellow-blank large-yellow-blank
  • large-yellow-cutout large-yellow-cutout
  • large-yellow-message large-yellow-message
  • large-yellow-user large-yellow-user
  • small-blue-blank small-blue-blank
  • small-blue-cutout small-blue-cutout
  • small-gray-blank small-gray-blank
  • small-gray-cutout small-gray-cutout
  • small-gray-message small-gray-message
  • small-gray-user small-gray-user
  • small-green-blank small-green-blank
  • small-green-cutout small-green-cutout
  • small-green-user small-green-user
  • small-orange-blank small-orange-blank
  • small-orange-cutout small-orange-cutout
  • small-pink-blank small-pink-blank
  • small-pink-cutout small-pink-cutout
  • small-pink-user small-pink-user
  • small-purple-blank small-purple-blank
  • small-purple-cutout small-purple-cutout
  • small-red-blank small-red-blank
  • small-red-cutout small-red-cutout
  • small-yellow-blank small-yellow-blank
  • small-yellow-cutout small-yellow-cutout
  • small-yellow-user small-yellow-user

Paths

A path is specified as a list of longitude and latitudes, as well as optional properties to specify the weight and color of the path.

The coordinates of the path are the first value of the property, specified as a list of coordinates similar to GeoJSON.

Examples

Simple path with default color and weight.

path[]=[-122.651082,45.508543],[-122.653617,45.506468],[-122.654183,45.506756]

Specifying the color and weight of the path.

path[]=[-122.651082,45.508543],[-122.653617,45.506468],[-122.654183,45.506756];weight:6;color:0033ff

Examples

Simple map centered at a location

http://static-maps.pdx.esri.com/img.php?basemap=gray&width=400&height=240&zoom=14&latitude=45.5165&longitude=-122.6764

Map with a marker centered at an address

http://static-maps.pdx.esri.com/img.php?marker[]=location:920%20SW%203rd%20Ave,%20Portland,%20OR;icon:small-blue-cutout&basemap=gray&width=400&height=240&zoom=14

Map with an external marker image

http://static-maps.pdx.esri.com/img.php?basemap=gray&width=400&height=240&zoom=14&marker[]=lat:45.5165;lng:-122.6764;icon:http://aaronparecki.com/images/map-pin-green.png

How to install

How to install on a blank Ubuntu 14.10 image on Amazon

Install base packages

sudo apt-get update
sudo apt-get install git build-essential make bison flex gcc patch autoconf locate libssl-dev curl cmake libjpeg-dev libpng-dev libgif-dev libfreetype6 libfreetype6-dev imagemagick libmagickwand-dev libyaml-dev lynx htop 

Install nginx

wget http://nginx.org/download/nginx-1.7.3.tar.gz
tar -xzf nginx-1.7.3.tar.gz
cd nginx-1.7.3/
./configure --with-http_stub_status_module
make && sudo make install

Start nginx when the machine boots

sudo sh -c 'cat << ''EOF'' >> /etc/rc.local
/usr/local/nginx/sbin/nginx
EOF'

Install PHP

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get install php5-fpm php5-cli php5-curl php5-memcache php5-dev php5-imagick

Edit /etc/php5/fpm/pool.d/www.conf and uncomment the line listen.mode = 0660.

Restart PHP sudo service php5-fpm restart

Configure the virtual host for nginx

Add the below server block to /usr/local/nginx/conf/nginx.conf and remove the default server block.

    server {
        listen 80;
        location / {
           root /var/www/static-maps-api;

           location / {
               index index.php;
           }

           location ~ \.php$ {
               fastcgi_pass    unix:/var/run/php5-fpm.sock;
               fastcgi_index   index.php;
               fastcgi_split_path_info ^(.+\.php)(.*)$;
               include fastcgi_params;
               fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
           }
        }
    }

Add user www-data at the top of nginx.conf.

Clone the source

sudo mkdir -p /var/www/static-maps-api
sudo chown -R ubuntu: /var/www
cd /var/www/static-maps-api
git clone git@github.com:esripdx/Static-Maps-API-PHP.git .

License

Copyright 2013 Esri, 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.