私は JavaScript の初心者で、コードが少し乱雑であることを知っています。ここで自分の足を踏み入れたように感じますが、何らかの回避策があることを本当に望んでいます.
私が疑問に思っているのは、イベントリスナーをアンカーに追加する最良の方法は何ですか. 現在、マップ上のすべてのマーカーを設定するループがあります (そのため、マーカーごとに毎回コード行を記述する必要はありませんでした)。イベントリスナーになりました。
ページにはリンクのリストがあり、さまざまなものにタグを付けるために使用するデータでいっぱいの配列があります。私が必要としているのは、リンク (「マップしてください!」と表示されている場所) をクリックして、情報ウィンドウが表示されるようにすることです。次に、別のウィンドウが開いている場合に閉じるように切り替える必要があります。
ウェブサイトはここにあります: http://www.michiganwinetrail.com そしてここに完全な javascript ページがあります http://www.michiganwinetrail.com/mainmap2.js
編集する必要があるループのコード (JavaScript リンクの下部にあります) は次のとおりです。
function loadMap() {
var centerMich = new google.maps.LatLng(44.229457, -85.100098);
var myOptions = {
center: centerMich,
zoom: 7,
scrollwheel: false,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("mainMichMap"), myOptions);
var homesouthwestDiv = document.createElement('div');
var homenorthwestDiv = document.createElement('div');
var homesoutheastDiv = document.createElement('div');
homesouthwestDiv.index = 1;
homenorthwestDiv.index = 2;
homesoutheastDiv.index = 3;
var homeControl = {
southwest: swRegions(homesouthwestDiv, map),
northwest: nwRegions(homenorthwestDiv, map),
southeast: seRegions(homesoutheastDiv, map),
};
map.controls[google.maps.ControlPosition.RIGHT_TOP].push(homesouthwestDiv);
map.controls[google.maps.ControlPosition.RIGHT_TOP].push(homenorthwestDiv);
map.controls[google.maps.ControlPosition.RIGHT_TOP].push(homesoutheastDiv);
for (var i=0; i<=locations.length; i++) {
locations[i][0] = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
title: locations[i][3],
map: map,
content: locations[i][4]});
var infowindow = new google.maps.InfoWindow({
});
google.maps.event.addListener(locations[i][0], 'click', function() {
infowindow.setContent(this.content);
infowindow.open(map,this);
});
}
}