2015-08-20 5 views
0

как я могу перенаправить мое текущее местоположение, когда я открываю Google MapКак Перенаправление текущего местоположения в Google Maps

вот мой код в SetUpMap()

 private void setUpMap() { 
      mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker")); 
      mMap.setMyLocationEnabled(true); 

А также как я могу изменить маркер? Я получаю только синий круг в своем местоположении. Я хочу, чтобы изменить его на Pin

+0

Что вы имеете в виду с переадресацией? Вы хотите изменить положение маркера? –

+0

Да, потому что когда я открываю карту Google, она показывает центр карты. Чтобы показать мое местоположение, мне нужно нажать кнопку. Я не хочу нажимать кнопку Я просто хочу показать свое местоположение, если я открою карту google –

+0

Я отправлю ответ –

ответ

1
If you want to open map with your location through any activity then use this code  

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
    Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345")); 
    startActivity(intent); 


If you are using Google map then using location find lat long and pass this lat long in maps object 
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     Criteria criteria = new Criteria(); 
     String bestProvider = locationManager.getBestProvider(criteria, true); 
     Location location = locationManager.getLastKnownLocation(bestProvider); 
     if (location != null) { 
      onLocationChanged(location); 
     } 
     locationManager.requestLocationUpdates(bestProvider, 20000, 0, this); 
    public void onLocationChanged(Location location) { 
     TextView locationTv = (TextView) findViewById(R.id.latlongLocation); 
     double latitude = location.getLatitude(); 
     double longitude = location.getLongitude(); 
     LatLng latLng = new LatLng(latitude, longitude); 
     googleMap.addMarker(new MarkerOptions().position(latLng)); 
     googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
     googleMap.animateCamera(CameraUpdateFactory.zoomTo(15)); 
     locationTv.setText("Latitude:" + latitude + ", Longitude:" + longitude); 
    } 
0

Получить текущее местоположение пользователя, как только ваш Map готов, и вы должны анимировать камеру, как этот

Location location = this.mGoogleMap.getMyLocation(); 

    if (location != null) { 

     LatLng target = new LatLng(location.getLatitude(), location.getLongitude()); 
     CameraPosition position = this.mGoogleMap.getCameraPosition(); 

     Builder builder = new CameraPosition.Builder(); 
     builder.zoom(15); 
     builder.target(target); 

     this.mGoogleMap.animateCamera(CameraUpdateFactory.newCameraPosition(builder.build())); 

     }  

Итак, getMyLocation() должен выберите местоположение пользователя. Для получения местоположения используйте PROVIDERS. Вы также можете прослушивать местоположение, используя LocationListener, используя GoogleApiClient. Пожалуйста, прочитайте документацию Getting the Last Known Location и Receiving Location Updates перед публикацией здесь.

Чтобы дать пользовательский маркер для вашего местоположения есть нечто, называемое addMarker

mGoogleMap.addMarker(new MarkerOptions() 
         .position(new LatLng(location.getLatitude(), location.getLogitude())) 
         .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))); 
+0

Я помещаю этот код в закрытый void setUpMapIfNeeded() ?? –

+0

Нет, вам не следует так поступать. Как только «Карта» будет готова, вам нужно будет выбрать местоположение пользователя, после того, как оно будет выбрано, если вы выбрали камеру для определенного уровня масштабирования и отобразите маркер. Я считаю, что вы пытаетесь в первый раз, я попрошу вас сначала ознакомиться с документацией. Я сделал что-то подобное: «В SplashScreen» я извлекаю местоположение с помощью «GoogleApiClient» после извлечения, я загружаю «MapActivity», и я использую выбранное местоположение в «Map» с пользовательским «Marker». –

0

Вы можете попробовать с этим кодом, мы можем получить наше местоположение на карте Google по NETWORK_PROVIDER. NETWORK_PROVIDER выберите ваше местоположение из своего местоположения WIFI или компаний вашего сетевого провайдера (IDEA, AIRTEL, VODAPHONE).

try { 
        if (googleMap == null) { 
         googleMap = ((MapFragment) getFragmentManager() 
           .findFragmentById(R.id.map)).getMap(); 
        } 
        googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
        googleMap.setMyLocationEnabled(true); 
        LocationManager location_manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
        LocationListener listner = new getlatlngListner(); 
        location_manager.requestLocationUpdates(
          LocationManager.NETWORK_PROVIDER, 2000, 2000, listner); 
        location_manager 
          .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
0
private MarkerOptions mMarkerOptions = new MarkerOptions(); 
mMarkerOptions.visible(true); 
mMarkerOptions.icon(BitmapDescriptorFactory.fromBitmap(Your bitmap)); 
mMap.setMyLocationEnabled(true); 
mMap.getUiSettings().setMyLocationButtonEnabled(false); 
mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() { 
        @Override 
        public void onMyLocationChange(Location location) { 
         LatLng mPos = new LatLng(location.getLatitude(),location.getLongitude()); 
         mMarkerOptions.position(mPos); 
         mMap.addMarker(mMarkerOptions); 
         mMap.moveCamera(CameraUpdateFactory.newLatLng(mPos)); 
         mMap.animateCamera(CameraUpdateFactory.zoomTo(17)); 

        } 
       }); 
+0

Должен ли я по-прежнему использовать код в своем личном void setUpMap() –

+0

И если вы вызываете пустоту из приемника местоположения? Или вам нужно инициализировать все в этом методе? –

Смежные вопросы