2013-05-02 3 views
1

J'ai une carte Google Map de base, avec un drawingManager, comme ceci:polygones Autocomplete tout en tirant avec drawingManager en utilisant l'API Google Maps v3

var mapOptions = { 
    center: centroid, 
    zoom: 14, 
    scrollwheel: false, 
    mapTypeId: google.maps.MapTypeId.HYBRID, 
    mapTypeControlOptions: { 
     mapTypeIds: [google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.ROADMAP] 
    } 
} 

var map = new google.maps.Map(document.getElementById("map"), mapOptions); 

var drawingManager = new google.maps.drawing.DrawingManager({ 
    drawingMode: google.maps.drawing.OverlayType.POLYGON, 
    drawingControl: false, 

    polygonOptions: { 
     clickable: true, 
     draggable: true, 
     editable: true, 
     fillColor: '#ffff00', 
     fillOpacity: 0.8, 
     strokeWeight: 5 
    } 
}); 

drawingManager.setMap(map); 

polygones de dessin sur la carte fonctionne comme un charme, sauf un peu chose. Je dois explicitement fermer mon polygone, soit en cliquant sur le premier point, soit en double-cliquant quelque part (ou du moins, je ne trouve pas d'autre moyen). Mais je voudrais que mon polygone soit fermé en tout temps tout en tirant, un peu comme ceci:

http://www.birdtheme.org/useful/v3tool.html

(sélectionnez « polygone » dans la première zone de sélection à côté du titre). Maintenant je sais que cet exemple n'utilise pas le drawingManager, mais crée le polygone à la main, mais je me demande si quelque chose de similaire est possible en utilisant le drawingManager. Je crains que ce ne soit pas le cas, car je n'arrive pas à trouver de référence dans le manuel, mais cela m'étonne aussi, car je pense que c'est quelque chose que plus de gens aimeraient avoir.

+1

Je ne connais pas le drawingManager mais en utilisant un polygone standard, vous pouvez faire quelque chose comme 'yourPolygon.getPath(). Push (getPath(). GetAt (0));' Ceci fermerait automatiquement le polygone avec le premier point. – MrUpsidown

+0

@MrUpsidown Tant que cela est vrai, le problème est que, lorsque vous utilisez le drawingManager, vous n'avez pas accès au polygone tant que vous n'avez pas complété ce polygone explicitement. –

Répondre

0

Vous pourriez juste le faire vous-même; vous pouvez facilement enregistrer les événements de clic. Parce que vous connaissez la latlng de chaque point de votre polygone;

google.maps.event.addListener(map, 'click', addLatLng); 

poly = new google.maps.POLYGON(polyOptions); 
poly.setMap(map); 

function addLatLng(event) { 

path = poly.getPath(); 
path.push(event.latLng); 

} 
vous pouvez simplement le dessiner. Vous devrez le redessiner chaque fois qu'un nouveau point est ajouté.

Questions connexes