Проецирование только части SVG на Google Map - PullRequest
0 голосов
/ 02 октября 2009

У меня есть SVG-файлы, которые я бы хотел:

  1. экспорт и использование в качестве пользовательского наложения на земную поверхность с плоской евклидовой проекцией
  2. взять только полигоны и спроецировать их на Google Map

Мои SVG-файлы имеют некоторые общие правила:

  1. они все 4096x4096px
  2. Основные объекты карты центрированы

Я провел несколько экспериментов, один из которых можно увидеть здесь - http://dev.ondigital.eu/map/map.php* (удалите map.php из URL, чтобы увидеть svg, png и другие файлы). Как видите, проблема в том, что точки полигонов проецируются на левую сторону, а не центрируются + соотношение сторон абсолютно неверно.

Итак, вопрос: как рассчитать соотношение сторон, когда:

  1. атрибут svg viewBox присутствует
  2. атрибут svg viewBox отсутствует и / или каждый полигон должен быть преобразован (как в нашей map.svg).

А как насчет смещения (центрирования объекта)?

Заранее спасибо!

* Не тестировался с IE

1 Ответ

0 голосов
/ 03 октября 2009

Возможно ли, что вы путаете DivPixels с ContainerPixels?

Попробуйте изменить

   var latlng  = self.projection.fromPixelToLatLng(
       new GPoint(point[0], point[1]),
       self.map.getZoom()
   );

до

   var latlng  = self.map.fromContainerPixelToLatLng(
      new GPoint(parseFloat(point[0]), parseFloat(point[1]))
   );

В этом случае тот факт, что вы используете Strings, а не Numbers, вероятно, пока не вызывает никаких проблем, но сейчас лучше использовать Numbers и избежать возможности оператора + выполнять конкатенацию строк вместо сложения на ваши координаты позже в вашем проекте.

...