Jestem nowy w rozwoju w Androidzie za pomocą Google Maps API. Mogłem skonfigurować mapę i przetestować podstawową funkcjonalność, ale mam problemy z implementacją logiki pokazanej w dokumentacji do mojego własnego kodu.Jak mogę uwzględnić warstwę ruchu w mapach google?
mam zbadane i znaleźć poprzez dokumentacji firmy google trzeba mieć kontrolę Mapa Jeżeli dane drogowe dostępne są za pomocą:
public final boolean isTrafficEnabled()
a następnie wywołanie metody:
public final boolean isTrafficEnabled() {
return mMap.isTrafficEnabled();
}
public final void setTrafficEnabled(boolean enabled) {
mMap.setTrafficEnabled(enabled);
}
jestem nie wiem dokładnie, jak to zaimplementować, ponieważ jestem zupełnie nowy w rozwoju. Znalazłem się w innym źródle dokumentacji następujący przykład:
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var trafficLayer = new google.maps.TrafficLayer();
trafficLayer.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
Jednak nie wydaje się dowiedzieć, jak to zrobić poprawnie. Czy muszę edytować plik XML w jakikolwiek sposób, czy to wszystko jest zrobione z głównej akcji? Oto mój pełny kod działalność:
package example.testdevice;
import android.app.Dialog;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MainActivity extends FragmentActivity {
private static final int GPS_ERRORDIALOG_REQUEST = 9001;
GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (servicesOK()) { //checks if APK is available; if it is, display Map
setContentView(R.layout.activity_map);
if (initMap()){
Toast.makeText(this, "Ready to Map", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(this, "Map not available!", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
public boolean servicesOK() {
int isAvailable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); //pass this as context
if (isAvailable == ConnectionResult.SUCCESS) {
return true;
}
else if (GooglePlayServicesUtil.isUserRecoverableError(isAvailable)) {
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvailable, this, GPS_ERRORDIALOG_REQUEST); //error code, activity, request code
dialog.show();
}
else {
Toast.makeText(this, "Can't connect to Google Play Services", Toast.LENGTH_SHORT).show();
}
return false;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private boolean initMap() {
if (mMap == null) {
SupportMapFragment mapFrag =
(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); // reference to support map fragment
mMap = mapFrag.getMap();
}
return (mMap != null);
}
public final boolean isTrafficEnabled() {
return mMap.isTrafficEnabled();
}
public final void setTrafficEnabled(boolean enabled) {
mMap.setTrafficEnabled(enabled);
}
}
Do mapa ładuje, ale nie wykazują jakiegokolwiek ruchu. Każda pomoc będzie bardzo doceniona; z góry dziękuję.
Czy możesz wypróbować w mocno zakodowanym miejscu, takim jak Nowy Jork? Mapy Google nie mają danych o ruchu dla wszystkich krajów! –
Tak, proszę pana; Jestem w stanie wczytać mapę bez problemu, korzystając ze współrzędnych miasta w USA. Ciężko zakodowałem do mojego pliku manifestu XML; czy powinienem raczej ogłosić to w głównej mierze? –
Musisz wykryć swoją lokalizację, aby wyświetlić dane o ruchu dla tej konkretnej lokalizacji. Sprawdź moją odpowiedź. –