2017-03-12 3 views
1

Ich versuche nie Google Map. Dies ist ein Client-Projekt, wo siegetMap getMapAsync coverte Fehler

verwenden
compile project(':google-play-services_lib') 

Ich habe ihr Design verbessern die neueste Version von Android zu unterstützen, die

compile 'com.android.support:appcompat-v7:25.1.1' 

Art und Weise ist es zeigt mir einen Fehler, damit ich diese link versuchen.

Sie sagen Es kann behoben werden, indem die Abhängigkeit von Google Play Services auf 6.1. + Aktualisiert wird..

Dann benutze ich

compile 'com.google.android.gms:play-services:10.2.0' 

neueste Version von Android zu unterstützen.

Dann zeigt es mir Fehler getMap() so wandle ich es getMapAsync() aber was sind duing ist private static GoogleMap googlemap; dann es wie folgt vergeben:

googlemap=((MapFragment)getFragmentManager().findFragmentById(R.id.places_map)).getMap(); 

Wenn ich es konvertieren zu

googlemap = ((SupportMapFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(this); 

Es mir zeigen Error. Was zu tun ist

public class Frnt_mapActivity extends AppCompatActivity implements OnMapReadyCallback {//implements OnMapClickListener, OnMarkerDragListener { 


    public static double Shop_lat; 
    public static double Shop_lng; 
    public String Shop_title; 
    public String Shop_address; 
    public String Shop_icons; 


    ProgressDialog mDialog; 
    JSONObject jsonobject3; 
    JSONArray jsonarray3; 
    // Google Map 


    //private static GoogleMap googlemap; 

    public static EditText edit_search; 
    public static Button btn_search; 
    ArrayList<SearchBeams> getAllimgs; 
    // Location 
    ArrayList<String> world_locationlist; 
    ArrayList<LocationBeams> worldlocation; 
    // Looking for 
    ArrayList<String> looking_forlist; 
    ArrayList<LookingForBeams> world_looking_for; 

    public static ArrayList<SearchBeams> searchdata_list; 
    public static ArrayList<NormalSearchBeams> normlSearchList; 
    public static String mid; 
    public static String mpost_title; 
    public static String mimage; 
    public static List<String> imglist; 

    ArrayList<All_products_lat_long> venueList; 
    Spinner mySpinner2; 

    public static ArrayList<SearchBeams> GetIMG; 
    public static TextView txtlocation; 
    public static TextView txtlookingfor; 

    public static ArrayList<All_products_lat_long> mpItm; 
    String vals; 


    private int i; 
    private Intent intent; 
    HashMap<Marker, Integer> hashMap = new HashMap<Marker, Integer>(); 
    public static LatLng latlong; 

    @Override 
    public void onMapReady(GoogleMap map) { 
     map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.frnt_map_activity); 

     getActionBar().setDisplayShowHomeEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 

     mySpinner2 = (Spinner) findViewById(R.id.spin_looking_for); 
     // Spinner adapter 
     txtlookingfor = (TextView) findViewById(R.id.country); 
     txtlocation = (TextView) findViewById(R.id.rank); 



     SupportMapFragment mapFragment=getSupportFragmentManager().findFragmentById(R.id.places_map).getMapAsync(this); 
     googlemap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      // TODO: Consider calling 
      // ActivityCompat#requestPermissions 
      // here to request the missing permissions, and then overriding 
      // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
      //           int[] grantResults) 
      // to handle the case where the user grants the permission. See the documentation 
      // for ActivityCompat#requestPermissions for more details. 
      return; 
     } 
     googlemap.setMyLocationEnabled(true); 
     googlemap.getUiSettings().setZoomControlsEnabled(true); 
     googlemap.getUiSettings().setMyLocationButtonEnabled(true); 
     googlemap.getUiSettings().setCompassEnabled(true); 
     googlemap.getUiSettings().setRotateGesturesEnabled(true); 
     googlemap.getUiSettings().setZoomGesturesEnabled(true); 
     googlemap.setMyLocationEnabled(true); 
     intent=new Intent(Frnt_mapActivity.this,MainActivity.class); 
     googlemap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

      @Override 
      public void onInfoWindowClick(Marker arg0) { 
       i=hashMap.get(arg0); 
       intent.putExtra("PRODUCT_ID", venueList.get(i).getId()); 
        startActivity(intent); 
        //overridePendingTransition(R.anim.slide_right, R.anim.slide_left); 
      } 
     }); 


     new Frnt_mIcons_Activity().execute(); 
     new LocationList().execute(); 
     new LookingForList().execute(); 

     edit_search = (EditText)findViewById(R.id.txt_search); 
     btn_search = (Button)findViewById(R.id.btn_search); 
     btn_search.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       String text; 
       text=edit_search.getText().toString(); 
      // text!=null && 
       if(text.equals("") && text.startsWith(" ")==false){ 

        new GetSearch_data().execute(); 
        /*new Get_normal_search().execute(); 
        edit_search.setText("");*/ 
       }else 

        new Get_normal_search().execute(); 
       edit_search.setText(""); 

        //new GetSearch_data().execute(); 
      } 
     }); 

    } 

Sie rufen googlemap und auch das Hinzufügen von Marken. wie ich es

@Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 

     try{ 
      if(bd!=null){ 
       Marker marker=googlemap.addMarker(new MarkerOptions() 
         .position(new LatLng(Double.parseDouble(venue.getLatitude()), Double.parseDouble(venue.getLongitude()))) 
         .title(venue.getPost_title()) 
         .icon(bd)); 
       hashMap.put(marker, k); 
      } 

     }catch (Exception e){ 
      e.printStackTrace(); 
     } 


    } 



       switch (Integer.parseInt(venueList.get(k).getId())) 
       { 
        case 5689 : 
         Marker marker=googlemap.addMarker(new MarkerOptions() 
           .position(new LatLng(la, ln)) 
           .title(venueList.get(k).getPost_title()) 
           .icon(BitmapDescriptorFactory.fromResource(R.drawable.fruitandveg))); 
         hashMap.put(marker, k); 
         break; 
        case 5779 : 
         Marker marker1=googlemap.addMarker(new MarkerOptions() 
           .position(new LatLng(la, ln)) 
           .title(venueList.get(k).getPost_title()) 
           .icon(BitmapDescriptorFactory.fromResource(R.drawable.coffee))); 
         hashMap.put(marker1, k); 
         break; 
.....} 
+0

haben 'Es zeigt mir Fehler. Was tun? Was ist der Fehler? –

Antwort

1

Dies ist ein Client-Projekt, bei dem sie kompilieren Projekt verwenden implementieren können (': google-play-services_lib')

So ersetzen Sie, dass die mit diesem (beachten -maps)

compile 'com.google.android.gms:play-services-maps:10.2.0'

Dann es zeigt mir Fehler getMap() so wandle ich es getMapAsync()

Was ist richtig, aber

Sie sollten wirklich nicht static Karte Variable haben. Wenn es static Variablen in der ganzen App gibt, stimmt etwas im Design nicht.

Wenn ich es googlemap = ((SupportMapFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(this); umwandeln Es zeigen Fehler mich

Nun, ja das wird Fehler

1) getActivity() nicht notwendig ist.Sie befinden sich bereits in einer Activity Klasse

2) getSupportFragmentManager() ist nur verfügbar, wenn Sie extends AppCompatActivity (oder FragmentActivity) in der Klassendefinition

3) getMapAsync(this) wird, es sei denn Sie implements OnMapReadyCallback auf der Klassendefinition nicht.

Wenn Sie all das tun, dann werden Sie so etwas wie

import com.google.android.gms.maps.OnMapReadyCallback; 

public class YourActivity extends AppCompatActivity 
    implements OnMapReadyCallback { 

    private void SupportMapFragment mMapFragment; 
    // private GoogleMap mMap; // Commented so you don't use in onCreate 

    @Override 
    public void onMapReady(GoogleMap map) { 
     // this.mMap = map; 
     map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

     // TODO: call other map setup methods 
    } 

    // Inside onCreate 
     mMapFragment = getSupportFragmentManager().findFragmentById(R.id.map); 
     mMapFragment.getMapAsync(this); 

     // Don't do this in onCreate 
     // googlemap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

} 
+0

privates Feld ** SupportMapFragment ** nie verwendet. auf diese Weise weise ich wie in Bearbeitung zu. was zu tun mit googlemap – priya

+0

Es wird verwendet ... Lesen Sie die zwei Zeilen, die in Richtung der Unterseite meiner Antwort kommentiert werden –

+0

ok Ich habe es jetzt, ich ändere es richtig. – priya

Verwandte Themen