2014-04-11 33 views
5

Harita görünümünde göstermek istiyorum & harita boyutu 200X200 olmalıdır. Harita haritasını haritaya yüklemeyi denedim, ancak doğru haritayı görüntülerken ancak hareket etmiyorken yön göstericisine 2 ila 3 kez dokunulduğunda düzgün görüntülenmiyor. Ben değiştirmeden haritayı göstermek için ekranın tam boyutunu kullandığınızdaGoogle harita çevrimiçi, görünüm boyutu

map

Ama correctly.How yüklüyor herhangi bir kod i küçük görünüm ıin aynı görüntüleyebilir?

harita

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)); 

Kodunuzu Çözüm - fragmanı kullanılarak yapılan -

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> 

Java kodu -

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, bulunduğunuz yerin enlem ve boylamıdır.

+0

Çözüme sahip misiniz? –

+0

@LazyCoder Çözüm ekledim. –

+0

, çözümünüzü görüntülemiyor –

cevap

5

Ben aşağıdaki kodu test edilmiş ve boyutuna harita ile herhangi bir sorun yoktur 200dp x 200dp

Düzen:

<?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> 

Fragment:

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

Seni olduğunu görüyoruz MapFragment yerine MapView kullanarak. Google Maps V2'de, eski MapView sınıfı com.google.android.maps.MapView geçersizdir. Yani

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

ve ayrıca

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

Eğer AndroidManifest.xml tüm gerekli değişiklikleri yaptıktan emin olun

olması gereken Java kodu ve XML düzeni doğru MapView hem kullandığınızdan emin olun, hangi kapsar Maps V2 as described here için API_KEY'i tanımlama. Bunun dışında

, aşağıdakiler gibi sadece Aktivite ikamet karşılık gelen geçersiz kılma iç açıkça MapView en geçersiz kılınan işlevleri çağırmak zorunda

Eğer bir MapFragment yerine MapView kullanıyorsanız yapmak zorunda büyük bir şey yoktur
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(); 
    } 
} 

Bu, Acidity'inizde özel boyutlu bir MapView yüklemek için yeterli olmalıdır. Gereksiniminize uygun hale getirmek için aşağıdaki işlevleri de kullanabilirsiniz.

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

Aşağı oy? Niye ya? Eminim oy kullanan kişi bunu denemedi. En azından bir yorum bırakmış olmalı. – gnuanu