2016-05-30 3 views
0

Привет, я пытаюсь реализовать карты Google в своем приложении для Android, и мне удается это сделать хотя бы частично. На моей карте много ошибок (пока не появится нажмите несколько раз на экране, вы не можете изменить масштаб изображения, вы не можете двигаться только нажать на экран и надеюсь, что что-то произойдет) Это мой код:Карты Google действуют странно в моем приложении

public class LocatorFragment extends Fragment implements GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener, 
    GoogleMap.OnInfoWindowClickListener, 
    GoogleMap.OnMapLongClickListener, 
    GoogleMap.OnMapClickListener, 
    GoogleMap.OnMarkerClickListener{ 
private MapView mapView; 
private GoogleMap map; 
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 


    View rootView = inflater.inflate(R.layout.locator_fragment, parent, false); 
    mapView=(MapView)rootView.findViewById(R.id.mapview); 
    mapView.onCreate(savedInstanceState); 

    // Gets to GoogleMap from the MapView and does initialization stuff 
    map = mapView.getMap(); 

    // Defines the xml file for the fragment 
    return rootView; 
} 
// This event is triggered soon after onCreateView(). 
// Any view setup should occur here. E.g., view lookups and attaching view listeners. 
@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
     } 

@Override 
public void onConnected(@Nullable Bundle bundle) { 

} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

} 

@Override 
public void onInfoWindowClick(Marker marker) { 

} 

@Override 
public void onMapClick(LatLng latLng) { 

} 

@Override 
public void onMapLongClick(LatLng latLng) { 

} 

@Override 
public boolean onMarkerClick(Marker marker) { 
    return false; 
} 
} 

Это мой макет:

<com.google.android.gms.maps.MapView 
    android:id="@+id/mapview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Итак, когда я открываю фрагмент карты, я получаю пустую сетку, а затем каждый клик на этой сетке загружает часть карты: O это действительно странно. И я не могу увеличить или переместить карту

+0

Почему вы до сих пор используете 'GetMap()'? Это устарело. Я предлагаю перейти на Android-план Quickstart, чтобы ознакомиться с последней версией. –

ответ

0

Дополнение к ответу McAwesomeville.

Вам необходимо ознакомиться с обновленным Google Maps Android API. getMap был устаревшим. Вместо этого используйте getMapAsync(OnMapReadyCallback). Метод обратного вызова предоставляет вам экземпляр GoogleMap, который должен быть не нулевым и готовым к использованию. Он автоматически инициализирует систему карт и представление.

Просто выполните свою работу с интерфейсом OnMapReadyCallback, а затем назначьте ссылку googleMap в обратном вызове onMapReady().

Вот простой пример:

public class MainActivity extends Activity implements OnMapReadyCallback { 

private GoogleMap googleMap; 

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

MapFragment mapFragment = (MapFragment) getFragmentManager() 
.findFragmentById(R.id.map); 
mapFragment.getMapAsync(this); 
} 

@Override 
public void onMapReady(GoogleMap map) { 

googleMap = map; 

setUpMap(); 

} 
public void setUpMap(){ 
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
googleMap.setMyLocationEnabled(true); 
googleMap.setTrafficEnabled(true); 
googleMap.setIndoorEnabled(true); 
googleMap.setBuildingsEnabled(true); 
googleMap.getUiSettings().setZoomControlsEnabled(true); 
} 
} 
Смежные вопросы