2014-01-07 5 views
0

Я новичок в разработке Android, и в настоящее время я пытаюсь заставить мое приложение разместить создателя в текущем местоположении после нажатия кнопки. @SuppressLint («NewApi») открытый класс MainActivity extends Activity реализует LocationListener { Карта GoogleMap;Место маркера в API Карт Google после нажатия кнопки

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

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 

map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
.getMap(); 

map.setMyLocationEnabled(true); 

map.setPadding(0,200,0,0); 

} 

@Override 
public void onLocationChanged(Location location) { 

MarkerOptions mp = new MarkerOptions(); 

mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 

mp.title("my position"); 

} 

@Override 
public void onProviderDisabled(String provider) { 
// TODO Auto-generated method stub 

} 

@Override 
public void onProviderEnabled(String provider) { 
// TODO Auto-generated method stub 

} 


@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
// TODO Auto-generated method stub 

ответ

0

попробуйте заменить это, заменив этот код.

public class MainActivity extends Activity implements LocationListener { 
    GoogleMap map; 
    Button button; 
    MarkerOptions mp; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button = (Button) findViewById(R.id.button_id); 
     LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
     map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     map.setMyLocationEnabled(true); 
     map.setPadding(0,200,0,0); 

     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       mp.title("my position"); 

       map.addMarker(mp); 
      } 

     } 
    } 
    @Override 
    public void onLocationChanged(Location location) { 
     mp = new MarkerOptions(); 
     mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 
     mp.title("my position"); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    } 

} 
+0

Большое спасибо, я не ожидал такого быстрого ответа. Когда я вхожу в этот код, Eclipse, похоже, имеет проблему со второй фигурной скобкой после map.addMarker (mp); Уверен, что у меня есть правильное количество закрывающих фигурных скобок. – user3166143

+0

button.setOnClickListener (новый View.OnClickListener() { общественные недействительный OnClick (View v) { mp.title ("моя позиция"); map.addMarker (тр); } }); } – user3166143

2

На данный момент он просто падает маркеры каждый так часто.

=> Потому что вы звоните map.addMarker(mp); внутри onLocationChanged() метод.

+1

О, вы уже дали ответ. Я вас очень уважаю. Я читал ваш блог несколько раз. Мне очень приятно, что я вижу тебя здесь. Я проголосую за ваш ответ. это мое уважение. –

+0

Большое спасибо. Я сделал это редактирование, но у меня все еще есть проблема со второй фигурной скобкой после map.addMarker (mp); Не могли бы вы помочь? Я не понимаю, почему это происходит. – user3166143

+0

Снова вы забыли заполнить ');' после добавления кнопки нажатия на кнопку. –

0

удалить map.addMarker(mp) из onLocationChanged(), потому что он добавляет маркер к карте каждый раз при срабатывании события изменения местоположения.

1

Пожалуйста, замените код

@Override 
public void onLocationChanged(Location location) { 
    MarkerOptions mp = new MarkerOptions(); 
    mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 
    mp.title("my position"); 
    map.addMarker(mp); 
} 

в

@Override 
public void onLocationChanged(Location location) { 
    MarkerOptions mp = new MarkerOptions(); 
    mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 
    mp.title("my position"); 

} 

Я думаю, ваша проблема будет решена.

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