6

लोड करते हुए डिवाइस पर लोड हो रहा है गूगल मानचित्र मैं स्क्रीन sometimes.it नीचे प्राप्त कर रहा जैसा कि नीचे दिखाया दूसरा लोड पर आता है। google map अन्यथा यह रूट के साथ सामान्य Google मानचित्र के रूप में पूरी तरह से आता है, मैं SupportmapFragment का उपयोग कर रहा हूं और googleMap ऑब्जेक्ट को प्राप्त कर रहा हूं।अस्पष्ट आकाश स्क्रीन प्राप्त करते हुए गूगल मानचित्र

supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map_view_fragment); 

नीचे गतिविधि/टुकड़ा

public static void drawRouteIntoMap(final List<? extends MapHelper> position, final GoogleMap googleMap) { 
     /*List<MapHelper> position = new ArrayList<MapHelper>(); 
     for (int i = lastPosition; i < maps.size(); i++) { 
      position.add(maps.get(i)); 
     }*/ 
     final LatLngBounds.Builder mapBounds = new LatLngBounds.Builder(); 
     if (position.size() > 0 && Validator.isNotNull(googleMap)) { 
      googleMap.clear(); 
      List<PolylineOptions> polylineOptionses = new ArrayList<PolylineOptions>(); 
      PolylineOptions option = null; 
      Boolean lastPause = null; 
      for (MapHelper map : position) { 
       if (map.isPause()) { 
        if (Validator.isNull(lastPause) || !lastPause) { 
         option = new PolylineOptions().width(5).color(Color.rgb(255, 0, 155)).geodesic(true); 
         polylineOptionses.add(option); 
        } 
        mapBounds.include(new LatLng(map.getLatitude(),map.getLongitude())); 
        option.add(new LatLng(map.getLatitude(), map.getLongitude())); 
       } else { 
        if (Validator.isNull(lastPause) || lastPause) { 
         option = new PolylineOptions().width(5).color(Color.rgb(0, 179, 253)).geodesic(true); 
         polylineOptionses.add(option); 
        } 
        mapBounds.include(new LatLng(map.getLatitude(),map.getLongitude())); 
        option.add(new LatLng(map.getLatitude(), map.getLongitude())); 
       } 
       lastPause = map.isPause(); 
      } 
      for (PolylineOptions options : polylineOptionses) { 
       googleMap.addPolyline(options); 
      } 
      if(Validator.isNotNull(option)){ 
       //List<LatLng> points = option.getPoints(); 


       googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() { 
        @Override 
        public void onMapLoaded() { 
         LatLng startPoint = new LatLng(position.get(0).getLatitude(), position.get(0).getLongitude()); 
         googleMap.addMarker(new MarkerOptions().position(startPoint).title("start").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); 
         mapBounds.include(startPoint); 
         LatLng endPoint = new LatLng(position.get(position.size() - 1).getLatitude(), position.get(position.size() - 1).getLongitude()); 
         mapBounds.include(endPoint); 
         googleMap.addMarker(new MarkerOptions().position(endPoint).title("finish").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))); 
         googleMap.setPadding(15, 205, 10, 110); 
         googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(mapBounds.build(), 0)); 
         //googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(mapBounds.build(), 10)); 
         googleMap.moveCamera(CameraUpdateFactory.zoomOut()); 

        } 
       }); 
      } 

     } 
    } 


supportMapFragment.getMapAsync(new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap googleMap) { 
       if (Validator.isNotNull(googleMap)) { 
        googleMap.setMyLocationEnabled(false); 
        googleMap.clear(); 
        googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
         @Override 
         public void onMapClick(LatLng latLng) { 
          if (activity.preferences.isSaveScreen()) { 
           facebook.setChecked(false); 
           twitter.setChecked(false); 
           activity.replaceFragment(new FullMapFragment(), null); 
          } 
          if (!activity.preferences.isSaveScreen()) { 
           activity.preferences.setHistoryScreen(true); 
           activity.replaceFragment(new FullMapFragment(), null); 
          } 
         } 
        }); 
        if (gps) { 
         nonGpsSummary.setVisibility(View.GONE); 
         List<HistoryMap> historyMaps = new ArrayList<HistoryMap>(); 
         if (Validator.isNotNull(activity.preferences.getUserHistory().getHistoryMaps())) { 
          historyMaps.addAll(Arrays.asList(activity.preferences.getUserHistory().getHistoryMaps())); 
         } 
         if (historyMaps.size() > 0) { 
          if (Validator.isNotNull(googleMap)) { 
           drawRouteIntoMap(historyMaps, googleMap); 
          } 
         } else { 
          mapFrame.setVisibility(View.GONE); 
         } 
        } else { 
         gpsSummary.setVisibility(View.GONE); 
        } 
       } 
      } 
     }); 

इस सवाल zoom over specific route google map साथ संबंध में है में नक्शा प्रदर्शित करने के लिए कोड है। इसका उपयोग करके मुझे मैपबाउंड के साथ उचित मार्ग मिलता है लेकिन मुझे यह नहीं मिल रहा है कि यह स्क्रीन क्यों प्रदर्शित हो रही है।

मैं प्राप्त नहीं कर रहा हूँ cordinates 0.0 मैं डिबग कि, api कुंजी भी उचित है।

+0

के बजाय CameraUpdateFactory.newLatLngBounds(mapBounds.build(), 0) कहाँ से 'drawRouteIntoMap' बुला रहे हैं पर एक गद्दी स्थापित करने के लिए है? आप वहां 'GoogleMap.OnMapLoadedCallback' क्यों सेट कर रहे हैं? – antonio

+0

@antonio नक्शे के बाद पूरी तरह से लोड हो गया मैं वहां मार्ग प्रदर्शित करता हूं। –

+0

लेकिन नक्शा पूरी तरह से आप से पहले लोड किया जा सकता अपने 'GoogleMap.OnMapLoadedCallback' सेट और फिर यह कोई प्रभाव नहीं पड़ेगा। आप सामान है कि आप सही अंदर अपने 'onMapLoaded' विधि में क्या कर रही है की कोशिश की है' अगर (Validator.isNotNull (विकल्प)) { ' – antonio

उत्तर

5

आप moveCamera दो बार बुला रहे हैं। पहले एक कैमरा ले जाने के लिए कोशिश करता है लेकिन एक दूसरे के पहले एक समाप्त होने की प्रतीक्षा नहीं करता है और जूम बाहर प्रदर्शन करती है।

यह हर समय ऐसा नहीं कर सकते हैं और विभिन्न उपकरणों पर अलग ढंग से व्यवहार कर सकते हैं।

सबसे अच्छा विकल्प आपके 0

3

यह समस्या तब होती है जब अपने निर्देशांक ठीक से सेट नहीं हैं। सुनिश्चित करें कि निर्देशांक है कि आप प्रयोग कर रहे हैं देश में इशारा कर रही है सही ढंग से नक्शे पाने के लिए सुनिश्चित करें। एक और संभावित कारण यह है कि आपकी एपीआई कुंजी काम नहीं कर रही है, इस परियोजना के लिए नई एपीआई कुंजी उत्पन्न करने का प्रयास करें।

अधिक जानकारी के लिए इन संबंधित एसओ सवालों की जाँच करें।

+0

यह केवल दूसरी बार होता है जब मैं एक ही cordinates –

+0

कैसे मैं ऐसी स्थिति और posiiton नक्शा ठीक से हालांकि cordinates उचित होते हैं और यह 0.0 नहीं है रोका जा सकता है साथ ही नक्शे लोड –

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