Open Image Location in Maps

Since many images are shot using cellphones, they often contain GPS metadata indicating the location coordinates of the camera when the image was captured.


Using this AppleScript script, you can reveal an image’s location in the Maps application.


DOWNLOAD a zip archive (24mb) containing the Pixelmator example images, and the example AppleScript script file.

The AppleScript Script

Here are the AppleScript script that automates the process of extracting the location metadata from the image and showing the location in the Maps application.

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

property zoomLevel : 19 -- between 2 to 21
property mapViewType : "k" -- m (standard view), k (satellite view), H (hybrid view), r (transit view)
property shouldIncludeMapPoint : true

tell application id "com.pixelmatorteam.pixelmator.x"
 tell front document
 set pointTitle to the title of document info of it
 if pointTitle is "" then
 set pointTitle to the name of it
 end if
 set pointTitle to my encodeUsingPercentEncoding(pointTitle)
 set mapCoords to the location of the document info of it
 if mapCoords is {missing value, missing value} then
 display alert "MISSING DATA" message "This image does not contain location metadata." buttons {"Cancel"} default button 1
 error number -128
 end if
 copy mapCoords to {latitude, longitude}
 if shouldIncludeMapPoint is false then
 set mapURL to "" & latitude & "," & longitude & "&z=" & zoomLevel & "&t=" & mapViewType as string
 set mapURL to "" & latitude & "," & longitude & "&z=" & zoomLevel & "&t=" & mapViewType & "&q=" & pointTitle as string
 end if
 end tell
end tell
tell application "Maps"
 open location mapURL
end tell

on encodeUsingPercentEncoding(sourceText)
 -- create a Cocoa string from the passed AppleScript string, by calling the NSString class method stringWithString:
 set the sourceString to current application's NSString's stringWithString:sourceText
 -- apply the indicated transformation to the Cooca string
 set the adjustedString to the sourceString's stringByAddingPercentEscapesUsingEncoding:(current application's NSUTF8StringEncoding)
 -- coerce from Cocoa string to AppleScript string
 return (adjustedString as string)
end encodeUsingPercentEncoding