0

无法添加标记,可能非常简单,但我是新手。谢谢。

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?&sensor=true"></script>
    <script type="text/javascript">

        function addMarker() {
            var marker = new google.maps.Marker({
                position: new google.maps.LatLng(-34.397, 150.644),

                title:"Hello World!"
            });
        }


        function initialize() {
            var mapOptions = {
                center: new google.maps.LatLng(-34.397, 150.644),
                zoom: 8,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("map-canvas"),
            mapOptions);
        }
        google.maps.event.addDomListener(window, 'load', initialize);

        $(document).ready(function() {
            addMarker();
        })

    </script>
4

2 回答 2

3

两个问题,需要设置marker的map变量。您的地图变量是初始化函数的本地变量。

  • 在初始化地图后,从您的初始化函数(地图存在的地方)调用 addMarker 函数。

        function addMarker(map) {
          var marker = new google.maps.Marker({
            position: new google.maps.LatLng(-34.397, 150.644),
            map:map,
    
            title:"Hello World!"
          });
        }
    
        function initialize() {
          var mapOptions = {
            center: new google.maps.LatLng(-34.397, 150.644),
            zoom: 8,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          };
          var map = new google.maps.Map(document.getElementById("map-canvas"),
          mapOptions);
          addMarker(map);
        }
    

工作示例

于 2013-03-14T15:34:45.233 回答
1

您必须在标记构造函数中设置地图属性或在新对象上调用 setMap:

var marker = new google.maps.Marker({
            position: new google.maps.LatLng(-34.397, 150.644),
            map: map,   //make your map object global!
            title:"Hello World!"
        });

或者

marker.setMap(map);

https://developers.google.com/maps/documentation/javascript/reference#Marker

编辑:我关于使地图对象全局化的评论显然被忽略了,所以这里是:

map 对象应该是全局的,不仅是为了这个解决方案,而且您将在脚本的多个函数中需要它

于 2013-03-14T15:20:59.983 回答