Google Maps android通过在地图中移动标记来获得经度-纬度

法案

嗨,我正在开发一个Android应用程序,在该应用程序中,我需要用户通过移动Parker来选择位置,以便我可以在Android应用程序中那样完全获得所需的信息我做了一些研究,但我仍然很新,所以我找不到与此相似的东西。谁能指出我正确的方向?

我需要做的是在一个简单的Google地图中创建一个游标,它可以为我提供长期+长期数据。我只想在地图上放置一些静态位置。

拉尔

试试这个代码

主要活动

public class MainActivity extends ActionBarActivity{

    GoogleMap Mmap;
    GPSTracker gps;
    Marker marker;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();

        }
        gps=new GPSTracker(MainActivity.this);
        Mmap=((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        double curlat=gps.getLatitude();
        double curlon=gps.getLongitude();
        LatLng currentpos=new LatLng(curlat, curlon);
        Mmap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(curlat,curlon), 10));

        marker=Mmap.addMarker(new MarkerOptions().position(currentpos)
                .title("Draggable Marker")
                .snippet("Long press and move the marker if needed.")
                .draggable(true)
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.mark_start)));
        Mmap.setOnMarkerDragListener(new OnMarkerDragListener() {

            @Override
            public void onMarkerDrag(Marker arg0) {
                // TODO Auto-generated method stub
                Log.d("Marker", "Dragging");
            }

            @Override
            public void onMarkerDragEnd(Marker arg0) {
                // TODO Auto-generated method stub
                LatLng markerLocation = marker.getPosition();
                Toast.makeText(MainActivity.this, markerLocation.toString(), Toast.LENGTH_LONG).show();
                Log.d("Marker", "finished");
            }

            @Override
            public void onMarkerDragStart(Marker arg0) {
                // TODO Auto-generated method stub
                Log.d("Marker", "Started");

            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {


        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);

            return rootView;
        }
    }

}

GPS追踪器

public class GPSTracker extends Service implements LocationListener {

    private final Context mContext;

    // flag for GPS status
    boolean isGPSEnabled = false;

    // flag for network status
    boolean isNetworkEnabled = false;

    // flag for GPS status
    boolean canGetLocation = false;

    Location location = null; // location
    double latitude; // latitude
    double longitude; // longitude

    // The minimum distance to change Updates in meters
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

    // The minimum time between updates in milliseconds
    private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute

    // Declaring a Location Manager
    protected LocationManager locationManager;

    public GPSTracker(Context context) {
        this.mContext = context;
        getLocation();
    }

    public Location getLocation() {
        try {
            locationManager = (LocationManager) mContext
                    .getSystemService(LOCATION_SERVICE);

            // getting GPS status
            isGPSEnabled = locationManager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);

            // getting network status
            isNetworkEnabled = locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

            if (!isGPSEnabled && !isNetworkEnabled) {
                // no network provider is enabled
            } else {
                this.canGetLocation = true;
                if (isNetworkEnabled) {
                    locationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("Network", "Network Enabled");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
                // if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        Log.d("GPS", "GPS Enabled");
                        if (locationManager != null) {
                            location = locationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();
                            }
                        }
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return location;
    }

    /**
     * Stop using GPS listener Calling this function will stop using GPS in your
     * app
     * */
    public void stopUsingGPS() {
        if (locationManager != null) {
            locationManager.removeUpdates(GPSTracker.this);
        }
    }

    /**
     * Function to get latitude
     * */
    public double getLatitude() {
        if (location != null) {
            latitude = location.getLatitude();
        }

        // return latitude
        return latitude;
    }

    /**
     * Function to get longitude
     * */
    public double getLongitude() {
        if (location != null) {
            longitude = location.getLongitude();
        }

        // return longitude
        return longitude;
    }

    /**
     * Function to check GPS/wifi enabled
     * 
     * @return boolean
     * */
    public boolean canGetLocation() {
        return this.canGetLocation;
    }

    /**
     * Function to show settings alert dialog On pressing Settings button will
     * lauch Settings Options
     * */
    public void showSettingsAlert() {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

        // Setting Dialog Title
        alertDialog.setTitle("GPS is settings");

        // Setting Dialog Message
        alertDialog
                .setMessage("GPS is not enabled. Do you want to go to settings menu?");

        // On pressing Settings button
        alertDialog.setPositiveButton("Settings",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(
                                Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                        mContext.startActivity(intent);
                    }
                });

        // on pressing cancel button
        alertDialog.setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });

        // Showing Alert Message
        alertDialog.show();
    }

    @Override
    public void onLocationChanged(Location location) {
    }

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
}

activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.movingmarkergooglemaps.MainActivity"
    tools:ignore="MergeRootFrame" >

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

</FrameLayout>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android Google Maps经/纬度

来自分类Dev

使用react-google-maps从谷歌地图获取纬度/经度

来自分类Dev

在InfoWindow中显示Google Maps标记的纬度和经度

来自分类Dev

在angular-google-maps中将地址转换为纬度/经度

来自分类Dev

根据纬度和经度重点关注Google Maps API

来自分类Dev

来自Google Maps Api JSON的经度和纬度?

来自分类Dev

在Google Maps URL中查找纬度/经度坐标

来自分类Dev

Google Maps API:分别获取经度/纬度

来自分类Dev

解析 Google Maps API 的纬度和经度 (Bash)

来自分类Dev

为Google Maps列表中的每个纬度创建标记

来自分类Dev

为Google Maps列表中的每个纬度创建标记

来自分类Dev

在Google地图中按纬度/经度删除标记

来自分类Dev

Google Maps API向信息窗口添加标记的纬度和经度

来自分类Dev

Android Google Maps V2当前位置纬度经度NullPointerException

来自分类Dev

如何在Android Google Maps中获取距指定点(Lat,Lng)X距离的纬度,经度

来自分类Dev

通过传递经度和纬度来打开Apple Maps

来自分类Dev

尝试从Google Maps获取纬度是通过Android中的意图返回null

来自分类Dev

使用Google Maps API将邮政编码转换为纬度/经度坐标吗?

来自分类Dev

REGEX:从Google Maps静态图片网址中提取经度和纬度

来自分类Dev

如何从Google Maps xy和zoom参数获取纬度和经度边界

来自分类Dev

检查纬度和经度的公式在没有Google Maps Api的区域内

来自分类Dev

获取多边形中每个点的纬度和经度-Google Maps API v3

来自分类Dev

Angular Google Maps Markers-经度和纬度的不同属性名称

来自分类Dev

在ASP.NET中从Google Maps API Version3上的代码绑定经度和纬度

来自分类Dev

检查纬度和经度的公式在没有Google Maps Api的区域内

来自分类Dev

如何从Google Maps xy和zoom参数获取纬度和经度边界

来自分类Dev

使用纬度和经度值从PHP发送URL到Google Maps

来自分类Dev

什么是存储Google Maps路径(经度和纬度的数组)的最佳方法

来自分类Dev

是否可以从google maps API获取过去旅行过的地方的经度,纬度和时间戳?

Related 相关文章

  1. 1

    Android Google Maps经/纬度

  2. 2

    使用react-google-maps从谷歌地图获取纬度/经度

  3. 3

    在InfoWindow中显示Google Maps标记的纬度和经度

  4. 4

    在angular-google-maps中将地址转换为纬度/经度

  5. 5

    根据纬度和经度重点关注Google Maps API

  6. 6

    来自Google Maps Api JSON的经度和纬度?

  7. 7

    在Google Maps URL中查找纬度/经度坐标

  8. 8

    Google Maps API:分别获取经度/纬度

  9. 9

    解析 Google Maps API 的纬度和经度 (Bash)

  10. 10

    为Google Maps列表中的每个纬度创建标记

  11. 11

    为Google Maps列表中的每个纬度创建标记

  12. 12

    在Google地图中按纬度/经度删除标记

  13. 13

    Google Maps API向信息窗口添加标记的纬度和经度

  14. 14

    Android Google Maps V2当前位置纬度经度NullPointerException

  15. 15

    如何在Android Google Maps中获取距指定点(Lat,Lng)X距离的纬度,经度

  16. 16

    通过传递经度和纬度来打开Apple Maps

  17. 17

    尝试从Google Maps获取纬度是通过Android中的意图返回null

  18. 18

    使用Google Maps API将邮政编码转换为纬度/经度坐标吗?

  19. 19

    REGEX:从Google Maps静态图片网址中提取经度和纬度

  20. 20

    如何从Google Maps xy和zoom参数获取纬度和经度边界

  21. 21

    检查纬度和经度的公式在没有Google Maps Api的区域内

  22. 22

    获取多边形中每个点的纬度和经度-Google Maps API v3

  23. 23

    Angular Google Maps Markers-经度和纬度的不同属性名称

  24. 24

    在ASP.NET中从Google Maps API Version3上的代码绑定经度和纬度

  25. 25

    检查纬度和经度的公式在没有Google Maps Api的区域内

  26. 26

    如何从Google Maps xy和zoom参数获取纬度和经度边界

  27. 27

    使用纬度和经度值从PHP发送URL到Google Maps

  28. 28

    什么是存储Google Maps路径(经度和纬度的数组)的最佳方法

  29. 29

    是否可以从google maps API获取过去旅行过的地方的经度,纬度和时间戳?

热门标签

归档