2013-02-21 4 views
2

J'utilise Google Maps V2 pour Android, et j'ai besoin de dessiner un polygone sur l'ensemble de la carte, puis d'ajouter un trou dans une ville sélectionnée. Le but de ceci est de mettre en évidence des zones spécifiques de la carte, selon certaines options.Dessiner un polygone sur toute la carte

J'ai essayé dessiner un polygone sur la carte entière avec les limites suivantes:

Arrays.asList(new LatLng(90, -180), 
    new LatLng(-90, -180), 
    new LatLng(-90, 180), 
    new LatLng(90, 180), 
    new LatLng(90, -180)); 

Mais le polygone ne soit pas entraîné dans la carte. J'ai essayé de réduire les limites à une plus petite zone et le polygone apparaît sans problèmes.

Comment puis-je couvrir toute la carte avec un polygone?

Répondre

-1

lecture PolygonOptions, je pense que vous devriez être en mesure de le faire par:

List points = Arrays.asList(new LatLng(90, -180), 
    new LatLng(-90, -180), 
    new LatLng(-90, 180), 
    new LatLng(90, 180), 
    new LatLng(90, 180)); 
PolygonOptions options = new PolygonOptions(); 
options.addAll(points) 
options.fillColor(#80FF0000); // 50% opacity red, for example 
map.addPolygon(options); 

Vous devez spécifier une couleur de remplissage, si vous ne le faites pas. Si vous avez fait, désolé, mais je ne peux pas deviner le code que vous avez pas posté :)

+0

Je l'ai fait spécifier une couleur de remplissage, et c'est exactement le code que je l'ai essayé, même avec une course pour voir ce qui se passe. Il ne remplit pas la carte avec le polygone et trace une ligne à la place: http://imgur.com/0YqRb37. Cette ligne continue et se termine près de l'Australie :) – rfsbraz

+0

Peut-être que c'est un comportement étrange à propos de la carte API v2 polygone. Peut-être que ce n'est pas rendu si aucune des lignes ne traverse l'écran. Si votre objectif est de noircir la carte, vous pouvez essayer avec un TileOverlay à la place :) –

+0

Ceci ne fait que dessiner une ligne fine. – lostintranslation

4

je devrais travailler avec:

float delta = 0.1f; 

List points = Arrays.asList(new LatLng(90, -180), 

new LatLng(-90+delta, -180+delta), 

new LatLng(-90+delta, 0), 

new LatLng(-90+delta, 180-delta), 

new LatLng(0, 180-delta), 

new LatLng(90-delta, 180-delta), 

new LatLng(90-delta, 0), 

new LatLng(90-delta, -180+delta), 

new LatLng(0,-180+delta)); 

PolygonOptions options = new PolygonOptions(); 

options.addAll(points); 

options.fillColor(R.color.red_half_alpha); // 50% opacity red, for example #80FF0000 

map.addPolygon(options); 

J'espère que vous voyez où ce code va. Cela fonctionne très bien avec une carte android v2.

Je pense qu'il y a quelques problèmes avec le calcul en virgule flottante. L'autre point est, si vous regardez très soigneusement entre la Russie et l'Amérique (par exemple LatLng (0,180), LatLng (0, -180)), vous verrez très probablement une ligne très mince.

Ceci est votre polygone. PS: Si vous voyez des trous dans votre carte, donnez-lui un petit coup de tête, comment cela a fonctionné pour vous. Je pense que beaucoup de gens ont le même problème.

0

avoir un essai en utilisant celui-ci

  new PolygonOptions() 
     .add(new LatLng(85,90), new LatLng(85,0.1), 
      new LatLng(85,-90), new LatLng(85,-179.9), 
      new LatLng(0,-179.9), new LatLng(-85,-179.9), 
      new LatLng(-85,-90), new LatLng(-85,0.1), 
      new LatLng(-85,90), new LatLng(-85,179.9), 
      new LatLng(0,179.9), new LatLng(85,179.9)) 
Questions connexes