#GoogleMap #JavaScript #TypeScript
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=ja#maps_marker_remove-typescript
[[Maps JavaScript API]]の公式ドキュメントによると`Marker.setMap(null)`で削除できるらしい.. がObjectの関連は消えるが地図上からは消えなかった。。
色々調べても該当する情報を得られなかったが、事前に`Marker.setVisible(false)`することで解決。多分、何かが原因で描画が残ってしまってたと思われるので、大きな問題はないはず..。
[[Vue3]]との相性による問題かもしれない。
```ts
const removeAllMarkers = () => {
state.markers.forEach((x) => {
x.setVisible(false);
x.setMap(null);
});
};
```
また、[optimizedを有効にしている]と、上記方法で削除してもズーム値を変更したらピンが再描画される。恐らく`setMap(null)`が上手くいっていない副作用だろう。
回避策としては、[optimizedを有効にしている]Markerがある場合に地図を初期化して作り直すようにしている。
[optimizedを有効にしている]: https://developers.google.com/maps/documentation/javascript/markers#optimize