私は現在、食料品店の店舗検索に取り組んでいます。彼らのウェブサイトは Drupal で構築されましたが、Drupal モジュールを使用するのではなく、ストア ロケーターをゼロからコーディングしています。
これまでのところ、すべてうまくいっているように見えますが、誰かがマーカーをクリックしたときに情報ウィンドウが表示されない理由がわかりません。いくつかの調査を行い、さまざまなことを試した後、以下のコードはいくらか反応しているようです: マーカーをクリックすると、マップはバブルのためのスペースを作るために再中心に戻りますが、バブルは表示されません.
アップデート:
さらにテストを重ねた結果、実際に気泡が作成されていることがわかりました。マークアップはそこにありますが、何らかの理由で、Google はクリック時にそのコンテナーにdisplay:noneインライン スタイルを追加します。今思うのは、どうすればこれを防ぐことができるのだろうか?
どんなアイデア/助けも大歓迎です。
(function ($) {
Drupal.behaviors.storelocator = {
attach: function (context, settings) {
var map;
var markers_array = [];
google.maps.event.addDomListener(window, 'load', function() {
var mapOptions = {
position: new google.maps.LatLng(41.030, -73.411),
zoom: 10,
maxZoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var bounds = new google.maps.LatLngBounds();
$.get('/storelocator/storexml', function(xml) {
$(xml).find('marker').each(function() {
var banner_name = $(this).attr('name');
var address = $(this).attr('address');
var distance = parseFloat($(this).attr('distance'));
var latlng = new google.maps.LatLng(parseFloat($(this).attr('lat')), parseFloat($(this).attr('lng')));
createMarker(map, latlng, banner_name, address);
bounds.extend(latlng);
map.fitBounds(bounds);
});
});
});
function createMarker(map, latlng, banner_name, address) {
var icon_image = {
url: '/sites/default/modules/storelocator/images/' + banner_name + '.png',
size: new google.maps.Size(25, 30),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(12, 30)
}
var icon_shadow = {
url: '/sites/default/modules/storelocator/images/shadow.png',
size: new google.maps.Size(40, 30),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(12, 30)
}
var clickable_area = {
coord: [1, 1, 1, 30, 25, 30, 30, 1],
type: 'poly'
}
var marker = new google.maps.Marker({
map: map,
position: latlng,
shadow: icon_shadow,
icon: icon_image,
shape: clickable_area,
title: address,
html: '<strong>' + banner_name + '</strong><br/>' + address
});
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(this.html);
infoWindow.open(map, this);
});
markers_array.push(marker);
}
}
};
}(jQuery));