2015-08-04 5 views
0

Im пытается усердно разрешить пользователю рисовать полилинию на карте, когда они касаются карты, я не знаю, где я поступил неправильно, я думаю, проблема связана с методом onMapTouch, потому что карта отображается нормально но когда я прикасаюсь к карте, он говорит: «К сожалению приложение перестало работать», что вы думаете, Вот logcat:Android, Позвольте пользователю рисовать полилинию на карте

17319-17319 /? E/AndroidRuntime: FATAL ИСКЛЮЧЕНИЕ: главный процесса: com.example.sarahn.myapplication, PID: 17319 java.lang.IllegalArgumentException: нет позиции в настройках маркеров на com.google.lace.a (Unknown Source) в com.google.maps.api.android.lib6.d.ft.a (Неизвестный источник) на com.google.android.gms.maps.internal.l.onTransact (SourceFile: 167) на android.os.Binder .transact (Binder.java:380) на com.google.android.gms.maps.internal.IGoogleMapDelegate $ zza $ zza.addMarker (Неизвестный источник) на com.google.android.gms.maps.GoogleMap.addMarker (Неизвестный источник) на com.example.sarahn.myapplication.MapsActivity.onMapClick (MapsActivity.java:91) на com.google.android.gms.maps.Googl eMap $ 8.onMapClick (Неизвестный источник) at com.google.android.gms.maps.internal.zzj $ zza.onTransact (Неизвестный источник) на android.os.Binder.transact (Binder.java:380) at com .google.android.gms.maps.internal.ar.a (SourceFile: 93) по адресу com.google.maps.api.android.lib6.gmm6.c.ac.b (Неизвестный источник) на ru.google. maps.api.android.lib6.gmm6.n.bt.d (Неизвестный источник) at com.google.maps.api.android.lib6.gmm6.n.ak.onSingleTapConfirmed (Неизвестный источник) на ru.google. maps.api.android.lib6.gmm6.hgonSingleTapConfirmed (Неизвестный источник) на com.google.maps.api.android.lib6.gmm6.hihandleMessage (Неизвестный источник) на android.os.Handler.dispatchMessage (Обработчик. java: 102) у android .os.Looper.loop (Looper.java:211) at android.app.ActivityThread.main (ActivityThread.java:5317) в java.lang.reflect.Method.invoke (собственный метод) в java.lang. reflect.Method.invoke (Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1016) at com.android.internal.os.ZygoteInit.main (ZygoteInit. Java: 811)

public class MapsActivity extends                  FragmentActivit                 implementsGoogleMap.OnMapClickListener{ 

private GoogleMap mMap; 
ArrayList<LatLng> arrayList; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    setUpMapIfNeeded(); 
    arrayList = new ArrayList<LatLng>(); 
    SupportMapFragment f =            (SupportMapFragmen)                                                                           getSupportFragmentManager().findFragmentById(R.id.map); 
    mMap= f.getMap(); 
    mMap.setMyLocationEnabled(true); 
    mMap.setOnMapClickListener(this); 
    } 

    @Override 
    protected void onResume() { 
    super.onResume(); 
    setUpMapIfNeeded(); 
    } 

    public void onMapClick(LatLng latLng) { 

    MarkerOptions markerOptions = new MarkerOptions(); 
    markerOptions.position(latLng); 
    mMap.addMarker(markerOptions); 
    PolylineOptions p = new PolylineOptions(); 
    p.color(Color.RED); 
    p.width(5); 
    arrayList.add(latLng); 
    p.addAll(arrayList); 
    mMap.addPolyline(new PolylineOptions()); 
    mMap.addMarker(new MarkerOptions()); 



    } 
+0

пожалуйста, напишите ваш LogCat здесь – Aakash

ответ

0

Это может быть связано с тем, что position метод MarkerOptions возвращает объект, к которому вы устанавливаете положение.

Try:

MarkerOptions markerOptions = new MarkerOptions(); 
markerOptions = markerOptions.position(latLng); 

EDIT:

Я был неправ выше. Именно из-за этой строки кода:

mMap.addMarker(new MarkerOptions()); 

Вы добавляете новый маркер на карту без позиции. Прежде чем пытаться добавить карту, вам нужно установить положение маркера. Я не уверен, почему вы добавляете второй маркер к карте, так как вы уже добавили его в контактную зону пользователя. Вы также пытаетесь добавить полилинию к карте без атрибутов.

Попробуйте это и посмотреть, что происходит:

MarkerOptions markerOptions = new MarkerOptions(); 
markerOptions.position(latLng); 
mMap.addMarker(markerOptions); 
PolylineOptions p = new PolylineOptions(); 
p.color(Color.RED); 
p.width(5); 
arrayList.add(latLng); 
p.addAll(arrayList); 
mMap.addPolyline(p); 
+0

Теперь Ошибка IllegalArgumentException: нет позиции в настройках маркеров – sarah

+0

Я отредактировал мой ответ. Надеюсь, это сработает для вас. – Nate