0

我在自定義地圖上的標記掙扎。地圖集中在正確的位置,但標記不顯示在那個地方。有人有同樣的問題已經解決了嗎? 非常感謝您的幫助!谷歌地圖標記不顯示javascript

function initialize() { 
       var map_canvas = document.getElementById('map_canvas'); 
       var map_options = { 
        scrollwheel: false, 
        zoom: 16, 
        center: new google.maps.LatLng(51.840164,4.33244), 
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
        mapTypeControl: false, 
        mapTypeControlOptions: { 
         style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, 
         position: google.maps.ControlPosition.TOP 
        }, 
        panControl: false, 
        panControlOptions: { 
         position: google.maps.ControlPosition.TOP_RIGHT 
        }, 
        zoomControl: true, 
        zoomControlOptions: { 
         style: google.maps.ZoomControlStyle.LARGE, 
         position: google.maps.ControlPosition.LEFT_CENTER 
        }, 
        scaleControl: false, 
        scaleControlOptions: { 
         position: google.maps.ControlPosition.TOP_LEFT 
        }, 
        streetViewControl: false, 
        streetViewControlOptions: { 
         position: google.maps.ControlPosition.LEFT_CENTER 
        } 
        } 

       var map = new google.maps.Map(map_canvas, map_options) 
       } 

     function addMarker(feature) { 
        var marker = new google.maps.Marker({ 
        position: feature.position, 
        icon: 'locationpointer.png', 

        map: map_canvas 
        }); 
       } 

       var features = [ 
        { 
        position: new google.maps.LatLng(51.840164,4.33244), 
        } 
       ]; 

       for (var i = 0, feature; feature = features[i]; i++) { 
        addMarker(feature); 
       } 




     google.maps.event.addDomListener(window, 'load', initialize); 

回答

0

您需要在初始化函數中調用addMarker函數,以便之後地圖被初始化,而不是之前添加標記。你有2個選項來初始化標記的map屬性,1.使其成爲全局或2.將它傳遞給addMarker函數(如下所示)。另請注意,map_canvas是一個HTML DOM元素,不是google.maps.Map,該變量的名稱是「map」。

function initialize() { 
    var map_canvas = document.getElementById('map_canvas'); 
    var map_options = { 
       scrollwheel: false, 
       zoom: 16, 
       center: new google.maps.LatLng(51.840164,4.33244), 
       mapTypeId: google.maps.MapTypeId.ROADMAP, 
       mapTypeControl: false, 
       mapTypeControlOptions: { 
        style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, 
        position: google.maps.ControlPosition.TOP 
       }, 
       panControl: false, 
       panControlOptions: { 
        position: google.maps.ControlPosition.TOP_RIGHT 
       }, 
       zoomControl: true, 
       zoomControlOptions: { 
        style: google.maps.ZoomControlStyle.LARGE, 
        position: google.maps.ControlPosition.LEFT_CENTER 
       }, 
       scaleControl: false, 
       scaleControlOptions: { 
        position: google.maps.ControlPosition.TOP_LEFT 
       }, 
       streetViewControl: false, 
       streetViewControlOptions: { 
        position: google.maps.ControlPosition.LEFT_CENTER 
       } 
       } 

    var map = new google.maps.Map(map_canvas, map_options) 

    var features = [ 
     { 
     position: new google.maps.LatLng(51.840164,4.33244), 
     } 
    ]; 

    for (var i = 0, feature; feature = features[i]; i++) { 
    addMarker(feature, map); 
    } 
} 

function addMarker(feature, map) { 
    var marker = new google.maps.Marker({ 
       position: feature.position, 
       icon: 'locationpointer.png', 
       map: map 
    }); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 
+0

謝謝你的幫助。但它不適合我。 'var map = new google.maps.Map(map_canvas,map_options) var point = new google.maps.LatLng(x,y); VAR標記=新google.maps.Marker({ 位置:點, 圖:圖, \t \t \t圖標: '##', 標題: 「##。」}); '爲我工作 – Drogon

0

您缺少將標記添加到地圖。 或者使用marker.setMap(map),或者在你試圖做的時候通過標記屬性傳遞它。 但在你的代碼中的地圖和map_canvas提供變量沒有在全球範圍內,這意味着你的addMarker功能不能添加它與地圖:map_canvas提供爲null

var marker = new google.maps.Marker({ 
    position: feature.position, 
    icon: 'locationpointer.png', 
    **map: map_canvas** 
}); 

你將不得不稍微改變你的代碼通過地圖進入addMarker函數。