0
私はGoogleマップで店舗ロケータを構築します。それはすべてのブラウザで動作しますが、サファリと私は理由を知りません。 Safariがエラーをスローします: SyntaxError:予期しないトークン '='。パラメーター宣言の後に ')'または '、'が必要です。Safari JS構文エラー:予期しないトークン '='
はここに(私はそれを少しshortend)コードです:
var marker = [];
var LatLng;
var infoWindow = new google.maps.InfoWindow();
var markerInfo = [];
var bounds = new google.maps.LatLngBounds();
var queryLatlng = new google.maps.LatLng(50.9683679, 10.7635554);
var zoom = 6;
var markers = [];
var mapOptions = {
center: queryLatlng,
zoom: zoom,
scroll: false,
scrollwheel: false,
streetViewControl: false,
mapTypeControl: true,
mapTypeControlOptions: {
position: google.maps.ControlPosition.TOP_LEFT
},
zoomControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.TOP_LEFT
},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map"),mapOptions);
var styles = [{
url: '../icon_marker_cluster30.png',
height: 30,
width: 30,
anchor: [5, 0],
textColor: '#ffffff',
textSize: 13
}, {
url: '../icon_marker_cluster40.png',
height: 40,
width: 40,
anchor: [9, 0],
textColor: '#ffffff',
textSize: 14
}, {
url: '../icon_marker_cluster50.png',
width: 50,
height: 50,
anchor: [13, 0],
textColor: '#ffffff',
textSize: 16
}];
function init(){
latlng = new google.maps.LatLng(50.343597, 19.007915);
marker['1'] = new google.maps.Marker({
position: latlng,
map: map
});
markers.push(marker['1']);
marker['1'].addListener('click', function() {
map.setZoom(15);
map.setCenter(marker['1'].getPosition());
});
bounds.extend(latlng);
markerInfo['1'] = createMarkerInfo("store", "address", "zipcode", "city");
google.maps.event.addListener(marker['1'], 'click', function() {
infoWindow.setContent(markerInfo['1']);
infoWindow.open(map, marker['1']);
});
var markerCluster = new MarkerClusterer(map, markers, {styles: styles});
google.maps.event.addListener(map, 'idle', function() {
showVisibleMarkers();
});
map.fitBounds(bounds);
}
function createMarkerInfo(name, address, zip, city, phone = null, mail = null){
var output = '';
output += '<span class="label">' + name + '</span><br /><br />';
output += address + '<br />';
output += zip + ' ' + city + '<br />';
if(phone)
output += '<br /><i class="fa fa-phone"></i> ' + phone;
if(mail)
output += '<br /><i class="fa fa-envelope"></i> <a href="mailto:' + mail + '">' + mail + '</a>';
return output;
}
function showMarker(id){
google.maps.event.trigger(marker[id], 'click');
$('html, body').animate({
scrollTop: $("#map").offset().top
}, 500);
}
function showVisibleMarkers() {
var bounds = map.getBounds();
for (var i = 0; i < markers.length; i++) {
var marker = markers[i],
infoPanel = $('table tr[data-marker="'+i+'"]'); // array indexes start at zero, but not our class names :)
if(bounds.contains(marker.getPosition())===true) {
infoPanel.removeClass('hidden');
}
else {
infoPanel.addClass('hidden');
}
}
$("table tr").removeClass("odd");
$("table tr:visible:odd").addClass("odd");
}
google.maps.event.addDomListener(window, "load", init);
私はいくつかのgooglelingを行なったし、「無名関数」でいくつかのヒントを見つけましたが、私はどのように、どこに問題が起こるか分かりません。
編集: 私は問題を 'createMarkerInfo'関数まで追跡できました。しかし、まだ全く分から:(
だけで正常に動作あなたが投稿コードが正しいとあなたがあなたの質問に含まれていない部分にエラーが発生する可能性があります。Safariはコンソールに適切なスタックトレースを表示し、エラーが発生した行を正確に表示します。 – marvinhagemeister
Safariは、 'init'関数の直後の空行 – Patricks
完全なjsコードで自分の投稿を更新しました – Patricks