2017-08-02 60 views
8

因此,我想在我的地圖上創建自己的樣式器。例如,假設我想在國家範圍內放些鮮花(或別的東西),我該怎麼辦?使用谷歌地圖創建樣式器api 3和js

我使用谷歌地圖的造型師,但有一個限制:我們可能會使用谷歌提供的不同造型師(不透明度,顏色...)。我如何創建我自己的風格?

我的地圖使用stylers風格,你可以在谷歌開發者上找到here。 該文檔沒有描述我的問題,我試圖找到一些方法在像堆棧溢出沒有成功的網站。

我將在示例中使用該文檔的映射以簡化示例。所以,這是我的代碼:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Styled Map Types</title> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <style> 
     /* Always set the map height explicitly to define the size of the div 
     * element that contains the map. */ 
     #map { 
     height: 100%; 
     } 
     /* Optional: Makes the sample page fill the window. */ 
     html, body { 
     height: 100%; 
     margin: 0; 
     padding: 0; 
     } 
    </style> 
    </head> 
    <body> 
    <div id="map"></div> 
    <script> 
     function initMap() { 

     // Create a new StyledMapType object, passing it an array of styles, 
     // and the name to be displayed on the map type control. 
     var styledMapType = new google.maps.StyledMapType(
      [ 
       {elementType: 'geometry', stylers: [{color: '#ebe3cd'}]}, 
       {elementType: 'labels.text.fill', stylers: [{color: '#523735'}]}, 
       {elementType: 'labels.text.stroke', stylers: [{color: '#f5f1e6'}]}, 
       { 
       featureType: 'administrative', 
       elementType: 'geometry.stroke', 
       stylers: [{color: '#c9b2a6'}] 
       }, 
       { 
       featureType: 'administrative.land_parcel', 
       elementType: 'geometry.stroke', 
       stylers: [{color: '#dcd2be'}] 
       }, 
       { 
       featureType: 'administrative.land_parcel', 
       elementType: 'labels.text.fill', 
       stylers: [{color: '#ae9e90'}] 
       }, 
       { 
       featureType: 'landscape.natural', 
       elementType: 'geometry', 
       stylers: [{color: '#dfd2ae'}] 
       }, 
       { 
       featureType: 'poi', 
       elementType: 'geometry', 
       stylers: [{color: '#dfd2ae'}] 
       }, 
       { 
       featureType: 'poi', 
       elementType: 'labels.text.fill', 
       stylers: [{color: '#93817c'}] 
       }, 
       { 
       featureType: 'poi.park', 
       elementType: 'geometry.fill', 
       stylers: [{color: '#a5b076'}] 
       }, 
       { 
       featureType: 'poi.park', 
       elementType: 'labels.text.fill', 
       stylers: [{color: '#447530'}] 
       }, 
       { 
       featureType: 'road', 
       elementType: 'geometry', 
       stylers: [{color: '#f5f1e6'}] 
       }, 
       { 
       featureType: 'road.arterial', 
       elementType: 'geometry', 
       stylers: [{color: '#fdfcf8'}] 
       }, 
       { 
       featureType: 'road.highway', 
       elementType: 'geometry', 
       stylers: [{color: '#f8c967'}] 
       }, 
       { 
       featureType: 'road.highway', 
       elementType: 'geometry.stroke', 
       stylers: [{color: '#e9bc62'}] 
       }, 
       { 
       featureType: 'road.highway.controlled_access', 
       elementType: 'geometry', 
       stylers: [{color: '#e98d58'}] 
       }, 
       { 
       featureType: 'road.highway.controlled_access', 
       elementType: 'geometry.stroke', 
       stylers: [{color: '#db8555'}] 
       }, 
       { 
       featureType: 'road.local', 
       elementType: 'labels.text.fill', 
       stylers: [{color: '#806b63'}] 
       }, 
       { 
       featureType: 'transit.line', 
       elementType: 'geometry', 
       stylers: [{color: '#dfd2ae'}] 
       }, 
       { 
       featureType: 'transit.line', 
       elementType: 'labels.text.fill', 
       stylers: [{color: '#8f7d77'}] 
       }, 
       { 
       featureType: 'transit.line', 
       elementType: 'labels.text.stroke', 
       stylers: [{color: '#ebe3cd'}] 
       }, 
       { 
       featureType: 'transit.station', 
       elementType: 'geometry', 
       stylers: [{color: '#dfd2ae'}] 
       }, 
       { 
       featureType: 'water', 
       elementType: 'geometry.fill', 
       stylers: [{color: '#b9d3c2'}] 
       }, 
       { 
       featureType: 'water', 
       elementType: 'labels.text.fill', 
       stylers: [{color: '#92998d'}] 
       } 
      ], 
      {name: 'Styled Map'}); 

     // Create a map object, and include the MapTypeId to add 
     // to the map type control. 
     var map = new google.maps.Map(document.getElementById('map'), { 
      center: {lat: 55.647, lng: 37.581}, 
      zoom: 11, 
      mapTypeControlOptions: { 
      mapTypeIds: ['roadmap', 'satellite', 'hybrid', 'terrain', 
        'styled_map'] 
      } 
     }); 

     //Associate the styled map with the MapTypeId and set it to display. 
     map.mapTypes.set('styled_map', styledMapType); 
     map.setMapTypeId('styled_map'); 
     } 
    </script> 
    <script async defer 
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"> 
    </script> 
    </body> 
</html> 
+0

根據文檔,您只能更改顏色(以及一些定義,如飽和度,亮度等 - 如您所說)。如果您想放置一些圖片(如鮮花到邊框),則需要創建自己的疊加圖片(透明圖片(或多個圖片)包含鮮花作爲邊框):https://developers.google.com/maps/documentation/ javascript/examples/groundoverlay-simple – alalp

回答

1

你讀完/使用谷歌自定義標記?如果不是visit google custom marker這可能會回答你的問題,誰知道。

+0

我讀了這麼多文檔!我的問題是如何創建一些樣式和文檔不對待這個。你不太明白我的問題。抱歉。 –