2014-10-21 5 views
10

क्या से ऊपर एक कस्टम मानचित्र परत से ऊपर एक ओवरले के रूप में Google मानचित्र API बेस मानचित्र डेटा का उपयोग करना संभव है?क्या Google मानचित्र API बेस मानचित्र को कस्टम मानचित्र परत के ऊपर ओवरले के रूप में उपयोग किया जा सकता है?

मैं एक नक्शा बनाना चाहता हूं जो नीचे के परत के रूप में Google के बेस वाटर और भूमि/इलाके का उपयोग करता है, और उसके बाद उस पर एक कस्टम डेटा परत (मेरे डेटा का प्रतिनिधित्व करने वाले लाल बहुभुज क्षेत्र) को स्थिति दें, और फिर अंत में Google मानचित्र की सड़क को स्थिति दें/सीमा/शहर लेबल सब कुछ के शीर्ष पर।

enter image description here

यह संभव है? मैंने ओवरलेमैप टाइप्स सरणी पर Google मानचित्र परत (केवल सड़कों/सीमाओं/शहरों को चालू करने के साथ) को धक्का देने का प्रयास किया, लेकिन ऐसा लगता है कि यह सब कुछ के शीर्ष पर सभी Google मानचित्र परतों को मजबूर करता है, और मेरा कस्टम लेयर डेटा (दूसरी परत) है अब दिखाई नहीं दे रहा है।

उत्तर

6

यहाँ मध्यम परत के रूप में एक कस्टम टाइल परत के साथ एक उदाहरण है:

<script type="text/javascript"> 
function initMap() { 
    // Map with everything off but boundaries 
    var myOptions = { 
     zoom: 2, 
     center: new google.maps.LatLng(0, 0), 
     styles: [ 
      { 
       featureType: 'poi', 
       stylers: [ 
        { visibility: 'off' } 
       ] 
      }, 
      { 
       featureType: 'road', 
       stylers: [ 
        { visibility: 'off' } 
       ] 
      }, 
      { 
       featureType: 'transit', 
       stylers: [ 
        { visibility: 'off' } 
       ] 
      }, 
      { 
       featureType: 'landscape', 
       stylers: [ 
        { visibility: 'off' } 
       ] 
      }, 
      { 
       elementType: 'labels', 
       stylers: [ 
        { visibility: 'off' } 
       ] 
      } 
     ] 
    }; 

    var map = new google.maps.Map(document.getElementById("map"), myOptions); 

    // Middle layer 
    var tileLayer = new google.maps.ImageMapType({ 
     getTileUrl: "tiles URL here", 
     tileSize: new google.maps.Size(256, 256), 
     isPng: true 
    }); 

    map.overlayMapTypes.push(tileLayer); 

    // Top layer with everything off but roads 
    var roadsLayer = [ 
     { 
      featureType: 'all', 
      stylers: [ 
       { visibility: 'off' } 
      ] 
     }, 
     { 
      featureType: 'road', 
      stylers: [ 
       { visibility: 'on' } 
      ] 
     } 
    ]; 

    var roadsType = new google.maps.StyledMapType(roadsLayer, { name: 'roads' }); 
    map.overlayMapTypes.push(roadsType); 
} 

+0

आपका समाधान काम करता है, लेकिन आप यह भी * प्रशासनिक चालू करना * और * पानी * 'featureType' रों। क्या आप इस समाधान को अंतर्निर्मित * लेबल * परत के समान दिखने के तरीके के बारे में जानते हैं? ऐसा करने के बाद भी, अतिरिक्त परत बिल्ट-इन * लेबल्स * परत की तुलना में अधिक अव्यवस्थित है। मेरा समाधान प्रति ज़ूम स्तर पर एक 'स्टाइलमैप टाइप टाइप' बनाना है, और 'zoom_changed' हैंडलर में उन्हें स्वैप करें। क्या आपके पास एक बेहतर समाधान है? –

+0

यह एक दिलचस्प उदाहरण था लेकिन मेरे विशिष्ट मामले में अभी तक मदद नहीं मिली है। विशेष रूप से मैं बहुभुज प्रस्तुत करने का प्रयास कर रहा हूं, फिर पॉलीगॉन के ऊपर Google के बेसमेप लेबल लेयर करें। मैंने इसे एक कस्टम क्लास लेबल्सऑवरले के साथ हासिल किया http://codepen.io/adg29/pen/VaMLrv –

+0

आपकी * कस्टम परत * के शीर्ष पर परत के लिए, किसी को 'स्टाइलर्स' के स्टाइलर्स सेट करने की आवश्यकता हो सकती है: [{दृश्यता: कस्टम परत को ओवरलैप न करने के क्रम में 'ऑफ'}] '। ** ज्यामिति ** सुविधा की दृश्यता को बंद करना विशेष रूप से महत्वपूर्ण हो सकता है –

संबंधित मुद्दे