2015-07-02 3 views
-1

Мне было интересно, могу ли я захватить пользовательский ввод на Google Maps. Например, если я нажму карту, появится флаг mark/flag, и если нажать кнопку «Сохранить», флаг/флаг будет сохранен в моей базе данных?google maps flagging как тип ввода android

+1

Вам нужно будет провести некоторое исследование в API Карт Google. Затем вернитесь сюда и спросите, как улучшить то, что вы узнали. – durbnpoisn

+0

ok sir, спасибо за вход :) – ErlAl

+0

Ваш вопрос немного широк, и запросы на учебные материалы не по теме, поэтому я удалил часть вашего сообщения. Я собирался дать вам ссылки на некоторые другие сообщения SO, однако я не нашел реального канонического ответа на это. Итак, я пошел вперед и разместил ответ относительно части карты вашего вопроса. Что касается функциональности базы данных, есть много других сообщений о SO, которые могут вам помочь. –

ответ

1

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

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 

     @Override 
     public void onMapClick(LatLng point) { 
      //save current location 
      latLng = point; 

      //remove previously placed Marker 
      if (marker != null) { 
       marker.remove(); 
      } 

      //place marker where user just clicked 
      marker = mMap.addMarker(new MarkerOptions().position(point).title("Marker") 
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA))); 

     } 
    }); 

Затем вы можете добавить кнопку, и в кнопку мыши слушателем вы бы иметь свой код который сохраняет данные из текущего маркера в вашу базу данных.

код Полный класс:

public class MapsActivity extends AppCompatActivity { 

    private GoogleMap mMap; 
    private Button saveButton; 
    private LatLng latLng; 
    private Marker marker; 


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

     saveButton = (Button) findViewById(R.id.saveButton); 

     saveButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //check of user has placed a marker 
       if (latLng != null){ 
        double lat = latLng.latitude; 
        double lon = latLng.longitude; 
        //save location data in database 
        //................... 

        Toast.makeText(MapsActivity.this, "Location Saved: " + lat + " " + lon, Toast.LENGTH_LONG).show(); 
       } 

      } 
     }); 

    } 

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

    private void setUpMapIfNeeded() { 
     // Do a null check to confirm that we have not already instantiated the map. 
     if (mMap == null) { 
      // Try to obtain the map from the SupportMapFragment. 
      mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
        .getMap(); 
      // Check if we were successful in obtaining the map. 
      if (mMap != null) { 
       setUpMap(); 
      } 
     } 
    } 

    private void setUpMap() { 

     mMap.setMyLocationEnabled(true); 
     mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
     mMap.getUiSettings().setMapToolbarEnabled(false); 

     mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 

      @Override 
      public void onMapClick(LatLng point) { 
       //save current location 
       latLng = point; 

       //remove previously placed Marker 
       if (marker != null) { 
        marker.remove(); 
       } 

       //place marker where user just clicked 
       marker = mMap.addMarker(new MarkerOptions().position(point).title("Marker") 
         .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA))); 

      } 
     }); 

    } 
} 

activity_maps.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MapsActivity" > 

    <fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment" /> 


    <Button 
     android:id="@+id/saveButton" 
     android:text="Save Current Marker Position" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true"/> 
</RelativeLayout> 

Результат после нажатия на карту, чтобы поместить маркер, а затем нажмите на кнопку Сохранить:

enter image description here

+0

Большое спасибо. это идея - это то, что мне нужно. :) Спасибо, сэр. – ErlAl