Google Maps API标记无效

时间:2014-07-15 20:49:57

标签: javascript google-maps google-maps-api-3 google-maps-markers

我想简单地显示一个标记。我使用Google的示例作为指南,因为这是我第一次使用Google Maps API。我在下面的代码中找不到任何语法问题。为什么不加载标记?

<!DOCTYPE html>
<html> 
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0px; padding: 0px }
      #map_canvas { height: 100%; z-index: 0;}
      #gmnoprint {width: auto;}
</style>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
<title>Google Map of Floor Plan</title> 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>
function CustomMapType() {
}
CustomMapType.prototype.tileSize = new google.maps.Size(256,256);
CustomMapType.prototype.maxZoom = 4;
CustomMapType.prototype.getTile = function(coord, zoom, ownerDocument) {
    var div = ownerDocument.createElement('DIV');
    var baseURL = 'C:/Temp';
    baseURL += zoom + '_' + coord.x + '_' + coord.y + '.png';
    div.style.width = this.tileSize.width + 'px';
    div.style.height = this.tileSize.height + 'px';
    div.style.backgroundColor = '#1B2D33';
    div.style.backgroundImage = 'url(' + baseURL + ')';
    return div;
};

CustomMapType.prototype.name = "Custom";
CustomMapType.prototype.alt = "Tile Coordinate Map Type";
var map;
var CustomMapType = new CustomMapType();
function initialize() {
    var myLatlng = new google.maps.LatLng(65, -56);
    var mapOptions = {
        minZoom: 0,
        maxZoom: 4,
        isPng: true,
        mapTypeControl: false,
        streetViewControl: false,
        center: new google.maps.LatLng(65.07,-56.08),     
        zoom: 3,
        mapTypeControlOptions: {
        mapTypeIds: ['custom', google.maps.MapTypeId.ROADMAP],
        style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
        }
    };
    var marker = new google.maps.Marker({
        position: myLatlng,
        map: map,
        title: 'Hello World'
    });

    map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
    map.mapTypes.set('custom',CustomMapType);
    map.setMapTypeId('custom');
}

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

</script>
</head> 
<body onload="initialize()"> 
<div id="map_canvas" style="background: #1B2D33;"></div> 
</body>
</html> 

1 个答案:

答案 0 :(得分:2)

创建marker时,您的地图未初始化:

var marker = new google.maps.Marker({
    position: myLatlng,
    map: map,
    title: 'Hello World'
});

map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);

因此,您必须先创建map,然后再使用它:

map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);

var marker = new google.maps.Marker({
    position: myLatlng,
    map: map,
    title: 'Hello World'
});
初始化地图后,

或在标记​​上调用setMap:

var marker = new google.maps.Marker({
    position: myLatlng,
    title: 'Hello World'
});

map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);

marker.setMap(map);