Google Maps API JavaScript V3.
Ma cartographie m'a fait face à l'idée de polygones, et j'essaie de développer une stratégie avant de plonger dans le code. P>
Je ne suis jamais aller avoir plus d'un polygone sur la carte à la fois, j'espère que je peux définir un polygone et le réutiliser comme vous le pouvez avec des marqueurs. p>
est mon compréhension correcte que les polygones setpath () ; La fonction déplacera le polygone pour représenter une nouvelle gamme de points? La documentation indique ... "L'insertion ou la suppression des latlngs de la MVCarray mettra automatiquement à jour le polygone sur la carte." Mais cela ne vient pas tout de suite et dire que vous pouvez utiliser SetPath (); Pour lui donner un tout nouveau éventail de points. P>
Je pense à PsueCode ... p> suis-je correct de penser que je peux réutiliser que je peux réutiliser Le même objet polygone dans cette fasion, ou dois-je repenser ma stratégie? p> Merci. P> Skip p> EDIT: La réponse est oui. Je vais mieux sur mon code et essayer de fournir une réponse bien écrite, qui montre les mises en garde que j'ai rencontrées. Tels que, la carte doit être visible pour Map.fitbounds (); donner des résultats cogents. P> p>
3 Réponses :
Oui, il est tout à fait possible de réutiliser le même objet de polygone ... P>
Je n'ai vraiment pas de code à offrir. Le pseudocode que j'ai énuméré dans la question fonctionne essentiellement. P>
Ce sont les choses que j'ai apprises ou choisies dans la chair de ma solution ... p>
Comme indiqué précédemment, la carte ne peut pas être Je garde déjà un objet de conteneur qui contient mes marqueurs. J'ai créé un objet de conteneur pour les chemins de polygone et ajoutez un attribut «polygone» aux marqueurs associés à un polygone, de sorte que plusieurs marqueurs peuvent faire référence au même chemin de polygone. P>
Même pour les polygones avec un seul chemin, j'ai choisi d'intégrer mon tableau de trajectoire, dans un autre tableau, puis utilisez Lors de l'analyse initiale du chemin Polygon Construisez un objet LATLNGBONDS, puis enregistrez-le, puis enregistrez son Quoi qu'il en soit, oui, c'est certainement possible, et je pense assez efficace de réutiliser le même objet polygone avec des chemins différents. P>
San Francisco & Oakland Recycler le même objet polygone ...
C'est tout ce que j'ai! p>
Skip p>
Mise à jour: j'ai trouvé des données de polygone avec plusieurs chemins. Il est branché dans. P> style = "affichage: Aucun;" code> pour
carte.fitbounds (); Code> fonctionner comme prévu. P >
polygon.setpaths (); code> de cette façon, le code sera plus facile si je développe des polygones avec plusieurs chemins. P>
lié.GetsOUTHWest (); code> &
lié.getNortheast (); code> avec le chemin. Ceci permet à
map.fitbounds (); code> au moment de l'affichage et empêche de recalculer les mêmes limites plusieurs fois. P>
p>
Oui, vous êtes tous les deux corrects dans votre hypothèse que la redéfinition des SetPaths redéfinira le polygone, mais vous devez définir ensuite le polygone pour être redessiné. Le polygone peut être en dehors de la fenêtre de l'API, qui n'est pas pertinent. Pour une facilité d'utilisation, une fois "repointé", car le polygone peut être en dehors de votre fenêtre de visualisation, il serait une bonne pratique de la convivialité de redéfinir le centre de la fenêtre à l'aide de la méthode SetCenter sur la carte. Ce code est un morceau que j'ai supprimé d'une application permettant aux utilisateurs de dessiner une polyligne puis de le convertir en polygone (puisque l'utilisateur peut vouloir réparer le périmètre, je lui permettait d'aller d'avant en arrière entre la polyline et le polygone). J'utilise toujours le même polygone et simplement SetPathssssssssss (il y a un S à la fin des polygones):
function confirmClosePolyline() { var pathArrayTemp = areaPerimeterPath.getPath(); var decision = confirm("Change POLYGON?"); if (decision) { areaMapPolygon.setMap(null); //makes polygon "invisible"/ removes areaMapPolygon.setPaths(pathArrayTemp); areaMapPolygon.setMap(map); } }
Actuellement, en 2020 Dec fort>, il suffisamment à utiliser uniquement: à redessiner un avec nouveau chemin sans réinitialisation de la carte code> Propriété . p> a essayé et cela fonctionne bien. p> p>