2017-07-25 64 views
0

我已將地圖啓動並運行,但我無法在「中心」和「位置」上指定緯度和長度的標記。有沒有人看到錯誤?我早些時候做了這個工作,但是在添加了樣式數組之後,它停了下來,我一定會意外地搞砸了一些東西,但是現在我沒有看到它。Google Maps API,根本無法顯示標記

<div id="map"></div> 

<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script> 

<script> 
    var map; 
    function initialize() { 
     var mapOptions = { 
      zoom: 17, 
      center: new google.maps.LatLng(36, -110), 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      styles: styleArray, 
      scrollwheel: false, 
     }; 
     map = new google.maps.Map(document.getElementById('map'), 
    mapOptions); 
    } 

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

    var styleArray = [ 
     { 
      featureType: "all", 
      stylers: [ { saturation: -80 } ] 
     }, 
     { 
      featureType: "road.arterial", 
      elementType: "geometry", 
      stylers: [ { hue: "#00ffee" }, { saturation: 50 } ] 
     }, 
     { 
      featureType: "poi.business", 
      elementType: "labels", 
      stylers: [ { visibility: "off" } ] 
     } 
    ]; 

    var marker = new google.maps.Marker({ 
     position: (36, -110), 
     title:"Hello World!", 
     map: (google.maps.MapTypeId.ROADMAP), 
    }); 

    marker.setMap(google.maps.MapTypeId.ROADMAP); 

</script> 

回答

1

有在發佈代碼的JavaScript錯誤:

  • InvalidValueError: setPosition: not a LatLng or LatLngLiteral: not an Object
  • InvalidValueError: setMap: not an instance of Map; and not an instance of StreetViewPanorama

你必須與你的代碼的幾個問題:

  1. 您的標記在initialize函數之外實例化(所以它在map變量被定義之前被實例化。將其移動到initialize函數中。

  2. marker.setMap函數採用一個google.maps.Map對象作爲其參數,這是不正確的:

    marker.setMap(google.maps.MapTypeId.ROADMAP); 
    

應該是:

marker.setMap(map); 
  • 這是不正確的,位置需要是google.maps.LatLng對象或google.maps.LatLngLiteral,(36, -110)既不是,map財產需要是google.maps.LatLng;這樣的:

    var marker = new google.maps.Marker({ 
        position: (36, -110), 
        title:"Hello World!", 
        map: (google.maps.MapTypeId.ROADMAP), 
    }); 
    
  • 應該是:

    var marker = new google.maps.Marker({ 
        position: google.maps.LatLng(36, -110), 
        title:"Hello World!", 
        map: map, 
    }); 
    

    proof of concept fiddle

    代碼片段:

    var map; 
     
    
     
    function initialize() { 
     
        var mapOptions = { 
     
        zoom: 17, 
     
        center: new google.maps.LatLng(36, -110), 
     
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
     
        styles: styleArray, 
     
        scrollwheel: false, 
     
        }; 
     
        map = new google.maps.Map(document.getElementById('map'), 
     
        mapOptions); 
     
        var marker = new google.maps.Marker({ 
     
        position: new google.maps.LatLng(36, -110), 
     
        title: "Hello World!", 
     
        map: map, 
     
        }); 
     
    
     
        marker.setMap(map); 
     
    } 
     
    
     
    google.maps.event.addDomListener(window, 'load', initialize); 
     
    
     
    var styleArray = [{ 
     
        featureType: "all", 
     
        stylers: [{ 
     
        saturation: -80 
     
        }] 
     
    }, { 
     
        featureType: "road.arterial", 
     
        elementType: "geometry", 
     
        stylers: [{ 
     
        hue: "#00ffee" 
     
        }, { 
     
        saturation: 50 
     
        }] 
     
    }, { 
     
        featureType: "poi.business", 
     
        elementType: "labels", 
     
        stylers: [{ 
     
        visibility: "off" 
     
        }] 
     
    }]; 
     
    
     
    
     
    google.maps.event.addDomListener(window, "load", initialize);
    html, 
     
    body, 
     
    #map { 
     
        height: 100%; 
     
        width: 100%; 
     
        margin: 0px; 
     
        padding: 0px 
     
    }
    <script src="https://maps.googleapis.com/maps/api/js"></script> 
     
    <div id="map"></div>

    0

    4使您的標記出現的步驟。

    • 把你的鑰匙放在JS庫中。像這樣: https://maps.googleapis.com/maps/api/js?sensor=false&key=[YOUR GOOGLE KEY] 有關詳細信息,請訪問this page

    • 將創建標記的代碼放入初始化方法中,只要確保它在映射創建後初始化即可。

    • 標記位置應該是一個實例new google.maps.LatLng(36, -110),而不是你的代碼(36, -110)
    • marker.setMap方法是不必要的,我們可以將其刪除。

    enter image description here