Ну, ответ оказался проще, чем я думал. Это вернуло меня к уроку, который я преподавал во время CompSci 101 почти 15 лет назад:
"Использовать существующие библиотеки, когда это возможно."
Как только я обнаружил (через поиск в Google), что то, что я ищу, не называется «смещением» или «масштабом», а фактически называется «буфером» в ГИС-вычислениях, это было просто. Есть несколько замечательных библиотек, таких как Clipper by Angus Johnson , которые могут это сделать, но я хотел что-то специфичное для JavaScript.
Это привело меня к ArcGIS GeometryService. У них даже есть Google Maps версия , но это только API v2. К счастью, есть официальная неподдерживаемая версия, которую я нашел на форумах arcGIS, которая работает с GMaps API v3.
Итак, мое решение состояло в том, чтобы использовать это, называемое arcgislink , и его буферная функция прекрасно работает с точками Google Maps LatLng, полигонами / полилиниями Google Maps и любыми стандартными типами arcGIS. Всем, кому нужно сделать это с помощью Google Maps, я настоятельно рекомендую просмотреть их библиотеки.