2013-02-23 10 views
21

कैसे स्थानांतरित करें किसी को पता है कि क्या आप मानचित्र के भीतर कंपास स्थिति बदल सकते हैं?Android Google मानचित्र API कम्पास स्थिति

मुझे लगता है कि यह how to enable or disable है। लेकिन मुझे इसे थोड़ा नीचे ले जाने की ज़रूरत है, इसलिए मेरा ओवरले इसे बाधित नहीं कर रहा है।

enter image description here

उत्तर

3

मुझे पता है के रूप में आप कम्पास स्थिति को बदल नहीं सकते हैं, लेकिन आप इसे अक्षम और तुम्हारा निजी एक बना सकते हैं।

See example here

+0

+1 दिलचस्प। चलो देखते हैं कि कोई कामकाज के साथ आता है, अगर क्रेडिट आपके सभी नहीं है। – capdragon

+0

लेकिन यह MapView का उपयोग कर रहा है। MapFragment के साथ कोई विचार? –

1

मैं जानता हूँ कि यह एक लंबे समय है कि प्रश्न पूछा गया था हो गया है, लेकिन मैं इस मुद्दे पर Feld कुछ दिन पहले मैं इस तरह की समस्या को ठीक करें:

try { 
       assert mapFragment.getView() != null; 
       final ViewGroup parent = (ViewGroup) mapFragment.getView().findViewWithTag("GoogleMapMyLocationButton").getParent(); 
       parent.post(new Runnable() { 
        @Override 
        public void run() { 
         try { 
          for (int i = 0, n = parent.getChildCount(); i < n; i++) { 
           View view = parent.getChildAt(i); 
           RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) view.getLayoutParams(); 
           // position on right bottom 
           rlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 0); 
           rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP,0); 
           rlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
           rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
           rlp.rightMargin = rlp.leftMargin; 
           rlp.bottomMargin = 25; 
           view.requestLayout(); 
          } 
         } catch (Exception ex) { 
          ex.printStackTrace(); 
         } 
        } 
       }); 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 

इस उदाहरण में मैंने कंपास को कोने में दाएं रखा। आपको यह सुनिश्चित करने की ज़रूरत है कि जब आप ऐसा करते हैं तो आपका नक्शाफ्रैगमेंट बनाया जाता है, मेरा सुझाव है कि आप अपने मानचित्र को अपने मानचित्रफ्रेममेंट के "onMapReady" विधि में चलाएं।

+1

को प्रभावित करेगा, यह किसी कारण से बाएं बाएं रोफ पर रखा गया है! – Paschalis

7
@Override 
public void onMapReady(GoogleMap map) { 

    try { 
     final ViewGroup parent = (ViewGroup) mMapView.findViewWithTag("GoogleMapMyLocationButton").getParent(); 
     parent.post(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        Resources r = getResources(); 
        //convert our dp margin into pixels 
        int marginPixels = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, r.getDisplayMetrics()); 
        // Get the map compass view 
        View mapCompass = parent.getChildAt(4); 

        // create layoutParams, giving it our wanted width and height(important, by default the width is "match parent") 
        RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(mapCompass.getHeight(),mapCompass.getHeight()); 
        // position on top right 
        rlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 0); 
        rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
        rlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
        rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 0); 
        //give compass margin 
        rlp.setMargins(marginPixels, marginPixels, marginPixels, marginPixels); 
        mapCompass.setLayoutParams(rlp); 
       } catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 
     }); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

} 
0

पैडिंग आधारित समाधान छोटे ऑफसेट के लिए काम करते हैं, लेकिन जहां तक ​​मैं जानता हूँ कि वहाँ के रूप में है कि हम मजबूती के साथ क्षैतिज कम्पास के "गुरुत्वाकर्षण" बदलने के लिए शेयर Google मानचित्र ऐप्लिकेशन की तरह बाएं से दाएं की अनुमति देता है कोई एपीआई उजागर है करता है:

enter image description here

ध्यान दें कि अगर आप अपने खुद के एप्लिकेशन में सही करने के लिए कम्पास स्थानांतरित करने के लिए छोड़ दिया गद्दी की एक बड़ी राशि के लिए लागू किया, नीचे बाईं ओर गूगल लोगो भी अधिक सही करने के लिए स्थानांतरित कर दिया जाएगा।

0

2.0 मानचित्र एपीआई पर।

 // change compass position 
    if (mapView != null && 
      mapView.findViewById(Integer.parseInt("1")) != null) { 
     // Get the view 
     View locationCompass = ((View) mapView.findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("5")); 
     // and next place it, on bottom right (as Google Maps app) 
     RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) 
       locationCompass.getLayoutParams(); 
     // position on right bottom 
     layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); 
     layoutParams.setMargins(0, 160,30, 0); // 160 la truc y , 30 la truc x 
    } 
संबंधित मुद्दे