2017-08-02 88 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

我读了这么多文档!我的问题是如何创建一些样式和文档不对待这个。你不太明白我的问题。抱歉。 –