2010-05-11 13 views
19

क्या GoogleMap में पड़ोसी देशों को मुखौटा करना संभव है? मेरे मामले में मैं सिर्फ एक दृश्य पर स्वीडन दिखाना चाहता हूं। नॉर्वे, डेनमार्क इत्यादि के दूसरे दृश्य पर ...क्या मैं GoogleMaps में एक एकल देश (मुखौटा आउट) दिखा सकता हूं?

मुझे पता है कि पॉलीगॉन लाइनों को आकर्षित करना और उन्हें मानचित्र API पर भरना संभव है। समस्या यह है कि परिणाम सेट बड़े हो जाते हैं या लाइनें बहुत मोटे हो जाते हैं ... अच्छा होगा अगर GoogleMaps उस समय एक देश को पड़ोसियों के बिना पहुंचा सकता है।

क्या कोई देश सीमाओं के साथ एक अच्छा समन्वय डेटाबेस के बारे में जानता है?

उत्तर

0

आप loading in a custom map?

माना मैं इसे अपने आप उपयोग नहीं किया है, लेकिन उम्मीद है कि लिंक तुम बाहर एक सा :) मदद कर सकता है

21

यदि प्रदर्शन में गिरावट के बिना मानचित्र में बहुत जटिल बहुभुज बना सकते हैं आप उन्हें केएमएल फ़ाइल प्रारूप में स्टोर करते हैं और उन्हें KmlLayers के रूप में लोड करते हैं। केएमएल भौगोलिक डेटा के लिए एक एक्सएमएल आधारित वेक्टर फ़ाइल प्रारूप है। Google मानचित्र में केएमएल फाइलों का उपयोग करने की सुंदरता यह है कि उन्हें Google पीएलजी फाइलों में सरल सर्वर पर प्रस्तुत किया जाता है, जो किसी भी समय आपके रिज़ॉल्यूशन और आपके मैप्स व्यू के बाउंडिंग बॉक्स से मेल खाते हैं, इससे कोई फर्क नहीं पड़ता कि मूल बहुभुज डेटा कितना जटिल है। इसलिए Google पर सभी जटिलता को सर्वर की तरफ संभाला जाता है।

यहां एक sample of a project है, जहां मैंने जर्मनी के संघीय राज्यों में से एक के लिए इस तरह के मास्किंग का उपयोग किया है। (इस मामले में परिवेश पूरी तरह से मुखौटा नहीं है लेकिन केवल मंद हो गया है। लेकिन आप उन्हें केएमएल फ़ाइल में भरने वाले रंग के अल्फा मान को आसानी से बदलकर आसानी से मास्क कर सकते हैं।)

एक त्वरित समीक्षा केएमएल के लिए फ़ाइलों को सीधे Google मानचित्र सार्वजनिक वेबसाइट में लोड किया जा सकता है (खोज क्षेत्र में अपना यूआरएल दर्ज करके)। यहां केएमएल फ़ाइल है जिसे मैंने उपरोक्त प्रोजेक्ट में उपयोग किया है, loaded directly into Google Maps। (मैंने वास्तव में यहां एक केएमजेड फ़ाइल का उपयोग किया है, लेकिन यह एक ज़िप संग्रह में पैक की गई एक केएमएल फ़ाइल है। आप इसे सामान्य ज़िप उपकरण के साथ पैक और अनपैक कर सकते हैं।)
BEGIN अद्यतन 07/2015: दुर्भाग्य से Google ने संभावना को हटा दिया है अपने सार्वजनिक Google मानचित्र के खोज क्षेत्र में सीधे केएमएल/केएमजेड फ़ाइल का यूआरएल दर्ज करें, जब उन्होंने 2014 में अपना नया डिज़ाइन संस्करण लॉन्च किया था। आप अभी भी इस उत्तर में चर्चा की गई सभी तकनीकों का उपयोग कर सकते हैं लेकिन आप आसानी से केएमएल फाइलों का पूर्वावलोकन नहीं कर सकते हैं खोज क्षेत्र अब और। यदि आपको आगे विश्लेषण के लिए ऊपर वर्णित केएमजेड की आवश्यकता है, तो आप download it here कर सकते हैं। अंत अद्यतन

कृपया ध्यान रखें कि Google केएमएल/केएमजेड फ़ाइलों (वर्तमान में 10 एमबी असंपीड़ित, 3 एमबी संपीड़ित - details see here) के लिए आकार सीमा का तात्पर्य है। यदि आपकी केएमएल फाइलें बड़ी होनी चाहिए, तो जटिलता को कम करने के लिए सॉफ्टवेयर उपलब्ध है (उदाहरण here और here देखें)।

आपको इंटरनेट पर कई स्थानों पर मुफ्त मानचित्र डेटा मिलेगा, उनमें से अधिकांश ESRI आकार फ़ाइल प्रारूप में हैं। देश के नक्शे के लिए एक महान स्रोत http://www.gadm.org/ है जो केएमएल/केएमजेड प्रारूप में भी अपना डेटा प्रदान करने के बड़े लाभ के साथ है। यदि आपको ईएसआरआई आकृति फाइलों को केएमएल में परिवर्तित करना होगा, तो महान (और मुफ्त) OGR converter पर एक नज़र डालें।

कृपया ध्यान दें कि यदि आपके बहुभुज स्थिर हैं (स्वीडन की सीमा की तरह) तो किसी भी उपयोगकर्ता इनपुट के आधार पर केएमएल फ़ाइलें केवल एक समाधान हैं। गतिशील बहुभुज के लिए आपको अभी भी जटिलता प्रतिबंधों के साथ मैप्स एपीआई के पॉलीगॉन क्लास का उपयोग करना होगा।

+0

हाय, महान जवाब है, लेकिन kmz लिंक टूटी हुई है। आपने एक स्थलचिह्न कैसे स्टाइल किया है ताकि बाहर – wrecker

+1

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

4

एक ऐसी ही समस्या थी और फ्यूजन तालिकाओं के साथ gamps संयोजन से यह कामयाब रहे:

var table_id = 420419; //can be exchanged wit another table 
var FT_Query = "SELECT 'kml_4326' FROM "+ table_id +" WHERE 'name_0' NOT EQUAL TO 'SWEDEN'"; 
var FT_Options = 
    { 
    suppressInfoWindows: true, 
    query: FT_Query 
    }; 
var layer = new google.maps.FusionTablesLayer(table_id, FT_Options); 
layer.setMap(map); 
संबंधित मुद्दे