2014-04-11 19 views
5

Desidero visualizzare la posizione nella vista mappa & dimensione della mappa deve essere 200X200. Ho provato a caricare la mappa in mapview ma non viene visualizzata correttamente dopo aver toccato il puntatore di direzione da 2 a 3 volte la sua visualizzazione della mappa corretta ma non in movimento.Google map in Android, display in dimensioni ridotte mapview

map

Ma quando uso formato completo dello schermo per la visualizzazione mappa senza modificare il codice sta caricando correctly.How can i visualizzare stesso iin vista piccola?

mappa code-

static GoogleMap map; 
private MapView mapView; 
MapsInitializer.initialize(getApplicationContext()); 

     switch (GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext())) 
     { 
     case ConnectionResult.SUCCESS: 
      //Toast.makeText(getActivity(), "SUCCESS", Toast.LENGTH_SHORT).show(); 
      mapView = (MapView)findViewById(R.id.map); 
      mapView.onCreate(savedInstanceState); 
      // Gets to GoogleMap from the MapView and does initialization stuff 
      if(mapView!=null) 
      { 
       map = mapView.getMap(); 
       map.getUiSettings().setMyLocationButtonEnabled(false); 
       map.setMyLocationEnabled(true); 
       CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(location, 10); 
       map.animateCamera(cameraUpdate); 
       map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
      } 
      break; 
     case ConnectionResult.SERVICE_MISSING: 
      //Toast.makeText(getActivity(), "SERVICE MISSING", Toast.LENGTH_SHORT).show(); 
      break; 
     case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED: 
      //Toast.makeText(getActivity(), "UPDATE REQUIRED", Toast.LENGTH_SHORT).show(); 
      break; 
     default: Toast.makeText(getApplicationContext(), GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()), Toast.LENGTH_SHORT).show(); 
     } 

     CameraPosition cameraPosition = new CameraPosition.Builder() 
     .target(location).zoom(10).bearing(0) // Sets the orientation of the camera to east 
     .tilt(70) // Sets the tilt of the camera to 30 degrees 
     .build(); // Creates a CameraPosition from the builder 
     map.setBuildingsEnabled(true); 
     map.setMyLocationEnabled(true); 
     map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

Solution - fatto usando frammento -

map_screen.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <fragment 
     android:id="@+id/mapfragment" 
     android:layout_width="wrap_content" 
     android:layout_height="200dp" 
     android:layout_alignParentTop="true" 
     android:layout_gravity="center_horizontal" 
     class="com.google.android.gms.maps.SupportMapFragment" /> 

    <TextView 
     android:id="@+id/reg_office_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/mapfragment" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="5dp" 
     android:gravity="center" 
     android:text="@string/tata_auto" 
     android:textColor="@color/tatablue" 
     android:textSize="18sp" /> 

</RelativeLayout> 

codice Java -

public class MapFragment extends Fragment { 

    private View view; 

    public GoogleMap map; 
    private Location location; 
    private LatLng mAddress1; 
    public static boolean inMap=false; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     view= inflater.inflate(R.layout.contact_map, container, false); 
     setMapView(); 
     return view; 
    } 

    private void setMapView(){ 
     CurrentLocation mCurrentLoc=new CurrentLocation(getActivity()); 
     location = CurrentLocation.locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     if (location != null) { 
      mCurrentLoc.onLocationChanged(location); 
     } else { 
      mCurrentLoc.onLocationChanged(location); 
     } 

     //class="com.google.android.gms.maps.SupportMapFragment" 

     map = ((SupportMapFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.mapfragment)).getMap(); 


     CameraPosition cameraPosition = new CameraPosition.Builder() 
     .target(mAddress1).zoom(8).bearing(0) // Sets the orientation of the camera to east 
     .tilt(30) // Sets the tilt of the camera to 30 degrees 
     .build(); // Creates a CameraPosition from the builder 
     map.setBuildingsEnabled(true); 
     map.setMyLocationEnabled(true); 
     map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 


    } 
} 

mAddress1 è la latitudine e la longitudine della vostra posizione.

+0

avere una soluzione? –

+0

@LazyCoder Ho aggiunto solution.check it –

+0

non visualizzare la soluzione –

risposta

5

Ho testato il codice qui sotto e non ci sono problemi con la mappa per la dimensione 200dp x 200dp

Disposizione:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFFFFF" 
    android:orientation="vertical"> 

    <fragment 
     android:id="@+id/map" 
     class="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="200dp" 
     android:layout_height="200dp" /> 

</LinearLayout> 

Frammento:

public class LocationFragment extends Fragment 
{ 
    GoogleMap googleMap; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View v = inflater.inflate(R.layout.fragment_location, container, false); 

     googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

     MapsInitializer.initialize(getActivity().getApplicationContext()); 

     googleMap.addMarker(new MarkerOptions() 
       .position(new LatLng(38.7222524, -9.139336599999979)) 
       .title("MyLocation") 
       .icon(BitmapDescriptorFactory 
         .fromResource(R.drawable.ic_mobileedge_navpoint))); 

     // Move the camera instantly with a zoom of 15. 
     googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(38.7222524, -9.139336599999979), 15)); 

     // Zoom in, animating the camera. 
     googleMap.animateCamera(CameraUpdateFactory.zoomTo(12), 1000, null); 

     return v; 
    } 
} 
2

vedo che tu sei usando MapView invece di MapFragment. In Google Maps V2, la vecchia classe MapView com.google.android.maps.MapView è obsoleta. Quindi assicuratevi di utilizzare il MapView corretto sia nel codice Java e il layout XML che dovrebbe essere

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

e

<com.google.android.gms.maps.MapView 
    android:id="@+id/map_view" 
    android:layout_width="your_width" 
    android:layout_height="your_height" /> 

assicurarsi di aver fatto tutte le modifiche necessarie nella AndroidManifest.xml Inoltre, che comprende definendo l'API_KEY per Maps V2 as described here.

Oltre a questo, c'è una cosa importante che devi fare se si utilizza MapView al posto di un MapFragment, è necessario chiamare le funzioni override del MapView esplicitamente all'interno delle corrispondenti override di residenti Attività proprio come,

public class YourMapActivity extends Activity { 

    MapView mMapView; 
    GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     /* Your OnCreate with Map Initialization */ 

     mMapView = (MapView) findViewById(R.id.map_view); 
     mMapView.onCreate(Bundle.EMPTY); 

     mMap = mMapView.getMap(); 
     MapsInitializer.initialize(this); 
    } 

    @Override 
    protected void onResume() { 
     mMapView.onResume(); 
     super.onResume(); 
    } 

    @Override 
    protected void onPause() { 
     mMapView.onPause(); 
     super.onPause(); 
    } 

    @Override 
    protected void onDestroy() { 
     mMapView.onDestroy(); 
     super.onDestroy(); 
    } 

    @Override 
    public void onLowMemory() { 
     mMapView.onLowMemory(); 
     super.onLowMemory(); 
    } 
} 

Questo dovrebbe essere sufficiente per caricare un MapView di dimensioni personalizzate in Acitivity. È inoltre possibile utilizzare le seguenti funzioni per adattarlo alle proprie esigenze.

mMapView.setClickable(false); 

mMap.getUiSettings().setMyLocationButtonnabled(false); 
mMap.getUiSettings().setZoomControlsEnabled(false); 
mMap.getUiSettings().setCompassEnabled(false); 
mMap.getUiSettings().setZoomGesturesEnabled(false); 
mMap.getUiSettings().setScrollGesturesEnabled(false); 
mMap.setMyLocationEnabled(true); 
+0

Voto negativo? Perché? Sono sicuro che quella persona che ha votato non l'ha provato. Almeno, avrebbe dovuto lasciare un commento. – gnuanu