2016-04-28 16 views
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'関数まで追跡できました。しかし、まだ全く分から:(

+0

だけで正常に動作あなたが投稿コードが正しいとあなたがあなたの質問に含まれていない部分にエラーが発生する可能性があります。Safariはコンソールに適切なスタックトレースを表示し、エラーが発生した行を正確に表示します。 – marvinhagemeister

+0

Safariは、 'init'関数の直後の空行 – Patricks

+0

完全なjsコードで自分の投稿を更新しました – Patricks

答えて

1

私は、エラーを発見した:。問題はcreateMarkerInfo関数のパラメータでしたあなたは電話=ヌルを削除する場合は、メール= nullのすべてが

関連する問題