I was unaware that support for SVG fragment identifiers is [not so hot][1], so I found somewhat of a workaround in the form of Base64 encoding (thanks to these [doppnet][2] and [CSS Tricks][3] posts). So, after optimizing my SVG in Inkscape I converted it to base64 using [Mobilefish's converter][4] (if you use this, make sure to set max characters per line to 0 so you don't have line breaks), and then added them as strings in a JSON array: var activityURI = [ {"activity":"All","uri":"oZWlnaH..."}, {"activity":"Hiking","uri":"4bWxucz..."}, ... ]; And then accessed them like this: //for minor extra efficiency, set prefix of URI common to every item in array: var uriRoot = "data:image/svg+xml;base64,PD94bWwgdmVy..."; //set full URI using desired index: var uriPath = uriRoot + activityURI[//desired index# goes here\\].uri; var defPoiStyle = { externalGraphic: uriPath } **Drawbacks** 1. Long, ugly strings in my code (thank goodness for word wrap). 2. Bigger JS file. 3. Tedious to maintain SVG since Base64 converter must be used every time. **Benefits:** 1. It works in Chrome. 2. No more individual HTTP requests for individual SVG files. **EDIT:** not true at all! I incorrectly assumed that this method would not trigger an additional HTTP request since it is included within my JS. Back to the drawing board... 3. Base64 may be [comparable in performance][5] to unencoded SVG. [Here is a working result][6]. Any thoughts on how to do this better? All ears. [1]: http://caniuse.com/#feat=svg-fragment [2]: http://doppnet.com/2012/07/Ninja-SVG-sprites [3]: http://css-tricks.com/using-svg/ [4]: http://www.mobilefish.com/services/base64/base64.php [5]: http://www.mobify.com/blog/base64-does-not-impact-data-uri-performance/ [6]: http://040914.scltmap.appspot.com/