在谷歌地图Android(SQLite)中添加和保存标记
我有一个小问题的应用程序,并希望寻求帮助。 代码中没有错误,但我在设备和模拟器上停止了一个消息应用程序。从日志中,我意识到方法setOnMapClickListener中的错误。我的任务-向数据库添加标记,在应用程序完全关闭然后启动后-显示数据库中的标记。不明白,为什么这个功能不起作用,我想在我的应用程序的这一部分中了解这个主题。提前感谢您的帮助! 另外,没有方法setOnMapClickListener,插入任务,绘制点应用程序正常启动 LocationsDB.java在谷歌地图Android(SQLite)中添加和保存标记,android,sqlite,google-maps,google-maps-markers,Android,Sqlite,Google Maps,Google Maps Markers,我有一个小问题的应用程序,并希望寻求帮助。 代码中没有错误,但我在设备和模拟器上停止了一个消息应用程序。从日志中,我意识到方法setOnMapClickListener中的错误。我的任务-向数据库添加标记,在应用程序完全关闭然后启动后-显示数据库中的标记。不明白,为什么这个功能不起作用,我想在我的应用程序的这一部分中了解这个主题。提前感谢您的帮助! 另外,没有方法setOnMapClickListener,插入任务,绘制点应用程序正常启动 LocationsDB.java package com
package com.morgannik.navigatortransportapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class LocationsDB extends SQLiteOpenHelper{
/** Database name */
private static String DBNAME = "locationmarkersqlite";
/** Version number of the database */
private static int VERSION = 1;
/** Primary key */
public static final String FIELD_ROW_ID = "_id";
/** Latitude */
public static final String FIELD_LAT = "lat";
/** Longitude*/
public static final String FIELD_LNG = "lng";
/** Table locations, stores the zoom level of map*/
public static final String FIELD_ZOOM = "zom";
/** Table name */
private static final String DATABASE_TABLE = "locations";
/** An instance variable for SQLiteDatabase */
private SQLiteDatabase mDB;
/** Constructor */
public LocationsDB(Context context) {
super(context, DBNAME, null, VERSION);
this.mDB = getWritableDatabase();
}
/** This is a callback method, invoked when the method getReadableDatabase() / getWritableDatabase() is called
* provided the database does not exists
* */
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table " + DATABASE_TABLE + " ( " +
FIELD_ROW_ID + " integer primary key autoincrement , " +
FIELD_LNG + " double , " +
FIELD_LAT + " double , " +
FIELD_ZOOM + " text " +
" ) ";
db.execSQL(sql);
}
/** Inserts a new location to the table locations */
public long insert(ContentValues contentValues){
long rowID = mDB.insert(DATABASE_TABLE, null, contentValues);
return rowID;
}
/** Deletes all locations from the table */
public int del(){
int cnt = mDB.delete(DATABASE_TABLE, null , null);
return cnt;
}
/** Returns all the locations from the table */
public Cursor getAllLocations(){
return mDB.query(DATABASE_TABLE, new String[] { FIELD_ROW_ID, FIELD_LAT , FIELD_LNG, FIELD_ZOOM } , null, null, null, null, null);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
LocationsContentProvider.java
package com.morgannik.navigatortransportapp;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;
import java.sql.SQLException;
/** A custom Content Provider to do the database operations */
public class LocationsContentProvider extends ContentProvider{
public static final String PROVIDER_NAME = "com.morgannik.navigatortransportapp.locations";
/** A uri to do operations on locations table. A content provider is identified by its uri */
public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/locations" );
/** Constant to identify the requested operation */
private static final int LOCATIONS = 1;
private static final UriMatcher uriMatcher ;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, "locations", LOCATIONS);
}
/** This content provider does the database operations by this object */
LocationsDB mLocationsDB;
/** A callback method which is invoked when the content provider is starting up */
@Override
public boolean onCreate() {
mLocationsDB = new LocationsDB(getContext());
return true;
}
/** A callback method which is invoked when insert operation is requested on this content provider */
@Override
public Uri insert(Uri uri, ContentValues values) {
long rowID = mLocationsDB.insert(values);
Uri _uri=null;
if(rowID>0){
_uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
}else {
try {
throw new SQLException("Failed to insert : " + uri);
} catch (SQLException e) {
e.printStackTrace();
}
}
return _uri;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
/** A callback method which is invoked when delete operation is requested on this content provider */
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int cnt = 0;
cnt = mLocationsDB.del();
return cnt;
}
/** A callback method which is invoked by default content uri */
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
if(uriMatcher.match(uri)==LOCATIONS){
return mLocationsDB.getAllLocations();
}
return null;
}
@Override
public String getType(Uri uri) {
return null;
}
}
MapsActivity.java
package com.morgannik.navigatortransportapp;
import android.content.ContentValues;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
public void onClickAdd(View view) {
mMap.addMarker(new MarkerOptions().position(new LatLng(47.23135, 39.72328)).draggable(true).icon(
BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
mMap.setOnMapClickListener(new OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
// Drawing marker on the map
drawMarker(point);
// Creating an instance of ContentValues
ContentValues contentValues = new ContentValues();
// Setting latitude in ContentValues
contentValues.put(LocationsDB.FIELD_LAT, point.latitude );
// Setting longitude in ContentValues
contentValues.put(LocationsDB.FIELD_LNG, point.longitude);
// Setting zoom in ContentValues
contentValues.put(LocationsDB.FIELD_ZOOM, mMap.getCameraPosition().zoom);
// Creating an instance of LocationInsertTask
LocationInsertTask insertTask = new LocationInsertTask();
// Storing the latitude, longitude and zoom level to SQLite database
insertTask.execute(contentValues);
Toast.makeText(getBaseContext(), "Marker is added to the Map", Toast.LENGTH_SHORT).show();
}
});
mMap.setOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng point) {
// Removing all markers from the Google Map
mMap.clear();
// Creating an instance of LocationDeleteTask
LocationDeleteTask deleteTask = new LocationDeleteTask();
// Deleting all the rows from SQLite database table
deleteTask.execute();
Toast.makeText(getBaseContext(), "All markers are removed", Toast.LENGTH_LONG).show();
}
});
}
private void drawMarker(LatLng point){
// Creating an instance of MarkerOptions
MarkerOptions markerOptions = new MarkerOptions();
// Setting latitude and longitude for the marker
markerOptions.position(point);
// Adding marker on the Google Map
mMap.addMarker(markerOptions);
}
private class LocationInsertTask extends android.os.AsyncTask<ContentValues, Void, Void> {
@Override
protected Void doInBackground(ContentValues... contentValues) {
/** Setting up values to insert the clicked location into SQLite database */
getContentResolver().insert(LocationsContentProvider.CONTENT_URI, contentValues[0]);
return null;
}
}
private class LocationDeleteTask extends android.os.AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
/** Deleting all the locations stored in SQLite database */
getContentResolver().delete(LocationsContentProvider.CONTENT_URI, null, null);
return null;
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng rostov = new LatLng(47.23135, 39.72328);
/*mMap.addMarker(new MarkerOptions().position(rostov).title("Rostov-on-Don").icon(
BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)
)
);*/
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(rostov, 14.f));
}
}
安卓清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.morgannik.navigatortransportapp">
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<permission
android:name="com.morgannik.navigatortransportapp.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.morgannik.navigatortransportapp.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--
The API key for Google Maps-based APIs is defined as a string resource.
(See the file "res/values/google_maps_api.xml").
Note that the API key is linked to the encryption key used to sign the APK.
You need a different API key for each encryption key, including the release key that is used to
sign the APK for publishing.
You can define the keys for the debug and release targets in src/debug/ and src/release/.
-->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="LocationsContentProvider"
android:authorities="com.morgannik.navigatortransportapp.locations"
android:exported="false" />
</application>
</manifest>
activity_maps.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClickAdd"
android:text="Add" />
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.morgannik.navigatortransportapp.MapsActivity" />
</LinearLayout>
我们需要等待映射准备就绪,然后在分配变量mMap之后输出方法,如setonmaclicklistener MapsActivity类的源:
package com.morgannik.navigatortransportapp;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LoaderManager.LoaderCallbacks<Cursor> {
private GoogleMap mMap;
public void onClickAdd(View view)
{
mMap.addMarker(new MarkerOptions().position(new LatLng(47.23135, 39.72328)).draggable(true).icon(
BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
// Invoke LoaderCallbacks to retrieve and draw already saved locations in map
getSupportLoaderManager().initLoader(0, null, this);
}
private void drawMarker(LatLng point){
// Creating an instance of MarkerOptions
MarkerOptions markerOptions = new MarkerOptions();
// Setting latitude and longitude for the marker
markerOptions.position(point);
// Adding marker on the Google Map
mMap.addMarker(markerOptions);
}
private class LocationInsertTask extends android.os.AsyncTask<ContentValues, Void, Void>
{
@Override
protected Void doInBackground(ContentValues... contentValues) {
/** Setting up values to insert the clicked location into SQLite database */
getContentResolver().insert(LocationsContentProvider.CONTENT_URI, contentValues[0]);
return null;
}
}
private class LocationDeleteTask extends android.os.AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
/** Deleting all the locations stored in SQLite database */
getContentResolver().delete(LocationsContentProvider.CONTENT_URI, null, null);
return null;
}
}
@Override
public Loader<Cursor> onCreateLoader(int arg0,
Bundle arg1)
{
// Uri to the content provider LocationsContentProvider
Uri uri = LocationsContentProvider.CONTENT_URI;
// Fetches all the rows from locations table
return new CursorLoader(this, uri, null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> arg0,
Cursor arg1)
{
int locationCount = 0;
double lat=0;
double lng=0;
float zoom=0;
// Number of locations available in the SQLite database table
locationCount = arg1.getCount();
// Move the current record pointer to the first row of the table
arg1.moveToFirst();
for(int i=0;i<locationCount;i++)
{
// Get the latitude
lat = arg1.getDouble(arg1.getColumnIndex(LocationsDB.FIELD_LAT));
// Get the longitude
lng = arg1.getDouble(arg1.getColumnIndex(LocationsDB.FIELD_LNG));
// Get the zoom level
zoom = arg1.getFloat(arg1.getColumnIndex(LocationsDB.FIELD_ZOOM));
// Creating an instance of LatLng to plot the location in Google Maps
LatLng location = new LatLng(lat, lng);
// Drawing the marker in the Google Maps
drawMarker(location);
// Traverse the pointer to the next row
arg1.moveToNext();
}
if(locationCount>0)
{
// Moving CameraPosition to last clicked position
mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(lat,lng)));
// Setting the zoom level in the map on last position is clicked
mMap.animateCamera(CameraUpdateFactory.zoomTo(zoom));
}
}
@Override
public void onLoaderReset(Loader<Cursor> arg0)
{
// TODO Auto-generated method stub
}
@Override
public void onMapReady(GoogleMap googleMap)
{
mMap = googleMap;
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener()
{
@Override
public void onMapClick(LatLng point)
{
// Drawing marker on the map
drawMarker(point);
// Creating an instance of ContentValues
ContentValues contentValues = new ContentValues();
// Setting latitude in ContentValues
contentValues.put(LocationsDB.FIELD_LAT, point.latitude );
// Setting longitude in ContentValues
contentValues.put(LocationsDB.FIELD_LNG, point.longitude);
// Setting zoom in ContentValues
contentValues.put(LocationsDB.FIELD_ZOOM, mMap.getCameraPosition().zoom);
// Creating an instance of LocationInsertTask
LocationInsertTask insertTask = new LocationInsertTask();
// Storing the latitude, longitude and zoom level to SQLite database
insertTask.execute(contentValues);
Toast.makeText(getBaseContext(), "Marker is added to the Map", Toast.LENGTH_SHORT).show();
}
});
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener()
{
@Override
public void onMapLongClick(LatLng point)
{
// Removing all markers from the Google Map
mMap.clear();
// Creating an instance of LocationDeleteTask
LocationDeleteTask deleteTask = new LocationDeleteTask();
// Deleting all the rows from SQLite database table
deleteTask.execute();
Toast.makeText(getBaseContext(), "All markers are removed", Toast.LENGTH_LONG).show();
}
});
LatLng rostov = new LatLng(47.23135, 39.72328);
/*mMap.addMarker(new MarkerOptions().position(rostov).title("Rostov-on-Don").icon(
BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)
)
);*/
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(rostov, 14.f));
}
}
在访问地图之前,您需要等待地图准备就绪-请参阅“onMapReady”。所以只需将“onCreate”中访问mMap的代码块移动到“onMapReady”方法中。数据库一切正常吗?我需要在onCreate中移动哪一块代码?从星期一开始?没有mMap.setOnMapClickListener和insert任务,应用程序正常启动。在“onCreate”中,有两个以“mMap.set…”开头的大行-变量mMap在调用“onMapReady”回调之前不会设置-因此,在分配“mMap”后,将这两个大行下移到“onMapReady”中。Andy,非常感谢!应用程序正在运行!
package com.morgannik.navigatortransportapp;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LoaderManager.LoaderCallbacks<Cursor> {
private GoogleMap mMap;
public void onClickAdd(View view)
{
mMap.addMarker(new MarkerOptions().position(new LatLng(47.23135, 39.72328)).draggable(true).icon(
BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
// Invoke LoaderCallbacks to retrieve and draw already saved locations in map
getSupportLoaderManager().initLoader(0, null, this);
}
private void drawMarker(LatLng point){
// Creating an instance of MarkerOptions
MarkerOptions markerOptions = new MarkerOptions();
// Setting latitude and longitude for the marker
markerOptions.position(point);
// Adding marker on the Google Map
mMap.addMarker(markerOptions);
}
private class LocationInsertTask extends android.os.AsyncTask<ContentValues, Void, Void>
{
@Override
protected Void doInBackground(ContentValues... contentValues) {
/** Setting up values to insert the clicked location into SQLite database */
getContentResolver().insert(LocationsContentProvider.CONTENT_URI, contentValues[0]);
return null;
}
}
private class LocationDeleteTask extends android.os.AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
/** Deleting all the locations stored in SQLite database */
getContentResolver().delete(LocationsContentProvider.CONTENT_URI, null, null);
return null;
}
}
@Override
public Loader<Cursor> onCreateLoader(int arg0,
Bundle arg1)
{
// Uri to the content provider LocationsContentProvider
Uri uri = LocationsContentProvider.CONTENT_URI;
// Fetches all the rows from locations table
return new CursorLoader(this, uri, null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> arg0,
Cursor arg1)
{
int locationCount = 0;
double lat=0;
double lng=0;
float zoom=0;
// Number of locations available in the SQLite database table
locationCount = arg1.getCount();
// Move the current record pointer to the first row of the table
arg1.moveToFirst();
for(int i=0;i<locationCount;i++)
{
// Get the latitude
lat = arg1.getDouble(arg1.getColumnIndex(LocationsDB.FIELD_LAT));
// Get the longitude
lng = arg1.getDouble(arg1.getColumnIndex(LocationsDB.FIELD_LNG));
// Get the zoom level
zoom = arg1.getFloat(arg1.getColumnIndex(LocationsDB.FIELD_ZOOM));
// Creating an instance of LatLng to plot the location in Google Maps
LatLng location = new LatLng(lat, lng);
// Drawing the marker in the Google Maps
drawMarker(location);
// Traverse the pointer to the next row
arg1.moveToNext();
}
if(locationCount>0)
{
// Moving CameraPosition to last clicked position
mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(lat,lng)));
// Setting the zoom level in the map on last position is clicked
mMap.animateCamera(CameraUpdateFactory.zoomTo(zoom));
}
}
@Override
public void onLoaderReset(Loader<Cursor> arg0)
{
// TODO Auto-generated method stub
}
@Override
public void onMapReady(GoogleMap googleMap)
{
mMap = googleMap;
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener()
{
@Override
public void onMapClick(LatLng point)
{
// Drawing marker on the map
drawMarker(point);
// Creating an instance of ContentValues
ContentValues contentValues = new ContentValues();
// Setting latitude in ContentValues
contentValues.put(LocationsDB.FIELD_LAT, point.latitude );
// Setting longitude in ContentValues
contentValues.put(LocationsDB.FIELD_LNG, point.longitude);
// Setting zoom in ContentValues
contentValues.put(LocationsDB.FIELD_ZOOM, mMap.getCameraPosition().zoom);
// Creating an instance of LocationInsertTask
LocationInsertTask insertTask = new LocationInsertTask();
// Storing the latitude, longitude and zoom level to SQLite database
insertTask.execute(contentValues);
Toast.makeText(getBaseContext(), "Marker is added to the Map", Toast.LENGTH_SHORT).show();
}
});
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener()
{
@Override
public void onMapLongClick(LatLng point)
{
// Removing all markers from the Google Map
mMap.clear();
// Creating an instance of LocationDeleteTask
LocationDeleteTask deleteTask = new LocationDeleteTask();
// Deleting all the rows from SQLite database table
deleteTask.execute();
Toast.makeText(getBaseContext(), "All markers are removed", Toast.LENGTH_LONG).show();
}
});
LatLng rostov = new LatLng(47.23135, 39.72328);
/*mMap.addMarker(new MarkerOptions().position(rostov).title("Rostov-on-Don").icon(
BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)
)
);*/
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(rostov, 14.f));
}
}