2011-01-27 125 views
3

我暫時使用香草代碼示例,甚至無法使其工作!谷歌地圖API v3自定義標記不顯示

我所說的使用創造標記...

overlay = new CustomMarker(new google.maps.LatLng(subitem[2], subitem[3]), mapView); 
overlay.setMap(mapView); 

而對於CustomMarker代碼

function CustomMarker(latlng, map) { 
google.maps.OverlayView.call(this); 

this.latlng_ = latlng; 

// Once the LatLng and text are set, add the overlay to the map. This will 
// trigger a call to panes_changed which should in turn call draw. 
this.set_map(map); 


} 


CustomMarker.prototype = new google.maps.OverlayView(); 

    CustomMarker.prototype.draw = function() { 
var me = this; 

// Check if the div has been created. 
var div = this.div_; 
if (!div) { 
    // Create a overlay text DIV 
    div = this.div_ = document.createElement('DIV'); 
    // Create the DIV representing our CustomMarker 
    div.style.border = "0px solid none"; 
    div.style.position = "absolute"; 
    div.style.paddingLeft = "0px"; 
    div.style.cursor = 'pointer'; 

    var img = document.createElement("img"); 
    img.src = "../../images/tile_images/ship_black_0.png"; 
    div.appendChild(img); 
    google.maps.event.addDomListener(div, "click", function(event) { 
    google.maps.event.trigger(me, "click"); 
    }); 

    // Then add the overlay to the DOM 
    var panes = this.get_panes(); 
    panes.overlayImage.appendChild(div); 
} 

// Position the overlay 
var point = this.get_projection().fromLatLngToDivPixel(this.latlng_); 
if (point) { 
    div.style.left = point.x + 'px'; 
    div.style.top = point.y + 'px'; 
} 


}; 

    CustomMarker.prototype.remove = function() { 
    // Check if the overlay was on the map and needs to be removed. 
    if (this.div_) { 
     this.div_.parentNode.removeChild(this.div_); 
     this.div_ = null; 
    } 
    }; 

    CustomMarker.prototype.get_position = function() { 
    return this.latlng_; 
    }; 

創建使用相同的經緯度標準標記和MapView的正常工作。

我得到的錯誤是

TypeError: Result of expression 'this.set_map' [undefined] is not a function.

回答

3

看來,

this.set_map(map); 

已經過時,現在是

this.setMap(map);