1

実行時に、Googleマップ上にいくつかのマーカーを作成する必要があります。

それらの初期位置はランダムに定義されます。

それらが作成されたとき、どうすればそれらのいくつかの位置を変更できますか?新しい位置もランダムに定義されます。

私は試してみました

marker1.setPosition(pt);

...しかし、エラーが発生します

marker1 is not defined

問題は、マップが作成された瞬間にmarker1が定義されていないことだと思います...そのようなものです。

どうすればこれを解決できますか?

ps作成されるマーカーの数に制限はありません。

UPDATEマーカーは次のもので作成されます。

function addNewMarker( locationsTotal ) {

if (document.getElementById("lon1").value == '') document.getElementById("lon1").value = '19';
if (document.getElementById("lat1").value == '') document.getElementById("lat1").value = '45';

var parliament = (map.getCenter());

var newMarker = 'marker' + locationsTotal;
newMarker = new google.maps.Marker({
  name:newMarker,
  id:newMarker,
  map:map,
  draggable:true,
  animation: google.maps.Animation.DROP,
  position: parliament, 
  icon: 'img/pin.png'
});

google.maps.event.addListener(newMarker, "dragend", function() {
  var center = newMarker.getPosition();
  var latitude = center.lat();
  var longitude = center.lng();
  var newLon = 'lon' + locationsTotal;
  var newLat = 'lat' + locationsTotal;
  document.getElementById(newLon).value = longitude;
  document.getElementById(newLat).value = latitude;
});

}
4

1 に答える 1

3

ご覧のとおり、関数newMarkerのスコープ内でのみ表示されaddNewMarkerます。必要なのは、グローバルスコープで表示される配列にマーカーを格納することです。例:関数を変更します。

var allMarkers = [];
function addNewMarker( locationsTotal ) {
   //.... skip
  allMarkers.push(newMarker);
}

これで、すべてのマーカーが配列に格納されるため、マーカーを操作できます。

名前でマーカーにアクセスするには、関数を追加します。

function getMarker(name) {
  for (k in allMarkers)
     if (allMarkers[k].name == name) return allMarkers[k];
  return null;
}
于 2012-05-17T10:37:02.817 に答える