2009-10-02 10 views
0

J'ai des fichiers SVG, que je voudrais:Projeter seulement une partie de SVG sur Google Map

  1. exportation et l'utilisation comme revêtement de sol personnalisé avec projection euclidienne plate (econym.org.uk/gmap/ example_custommapflat.htm).
  2. prennent polygones seulement et les projeter sur Google Map

Mes fichiers SVG ont des règles communes:

  1. ils sont tous 4096x4096px
  2. objets principaux de la carte sont centrées

J'ai fait quelques expériences, dont une pourrait être vue ici - http://dev.ondigital.eu/map/map.php * (enlever map.php de l'URL pour voir svg, png et d'autres dossiers). Comme vous pouvez le voir, le problème est que les points de polygones sont projetés sur le côté gauche au lieu d'être centrés + le rapport d'aspect est absolument incorrect.

La question est: Comment calculer le ratio d'aspect, lorsque:

  1. attribut de svg viewBox est présent
  2. attribut viewBox de svg n'est pas présente et/ou chaque polygone doit être transformé (comme dans notre map.svg).

Et qu'en est-il du décalage (object centration)?

Merci d'avance!

* Non testé avec IE

Répondre

0

Est-il possible que vous confondez avec DivPixels ContainerPixels?

Essayez de changer

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])) 
    ); 

Dans ce cas, le fait que vous utilisez des chaînes plutôt que des chiffres est probablement pas causer de problèmes, mais, mais il est une bonne idée de utilisez maintenant Numbers et évitez la possibilité que l'opérateur + fasse une concaténation de Chaîne au lieu de l'ajouter sur vos coordonnées plus tard dans votre projet.