如何在SQLite中保存标记位置并在该位置创建另一个活动?

时间:2017-03-03 09:36:20

标签: java android google-maps android-studio

我有一个应用程序,当前点击一个位置后,会弹出一个标记显示其纬度和经度。

**enter image description here**

我希望能够点击该标记并将其位置数据保存在我的SQLite数据库中。保存位置后,我希望突出显示我的Google地图中的该位置。我该怎么做?

4 个答案:

答案 0 :(得分:0)

请尝试以下代码:

@Override
    public void setOnMarkerClickListner(Marker marker) {
        // TODO Auto-generated method stub
       System.out.println(" "
                + map.getMyLocation().getLongitude()+map.getMyLocation().getLongitude());
     //Your code to add to database..
    }

在上面的代码中

map.getMyLocation().getLongitude()

给你经度和

map.getMyLocation().getLongitude()

为您提供纬度。然后您将编写代码以将其放入SQLite中。 希望有所帮助

答案 1 :(得分:0)

使用setOnMarkerClickListner单击标记并在onMarkerclick方法内写入您的逻辑以保存数据库中的经度和纬度并编写帮助方法以使用map.add(new MarkerOptions)在谷歌地图上添加标记,这将从db中读取数据

答案 2 :(得分:0)

您可以将它们作为REAL值保存在带有标识符的单个表中,然后从您想要的表中引用它们。

答案 3 :(得分:0)

请尝试实施类似下面的代码,MarkerInfoWindowAdapter会在点击标记时显示弹出窗口。

 protected void onCreate(Bundle savedInstanceState)
        {    
            setUpMap();
            displayLocationOnMap();
        }

     private void setUpMap()
            {

                if (mMap == null)
                {
                    mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapview)).getMap();

                    if (mMap != null)
                    {
                        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
                        {
                            @Override
                            public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker)
                            {
                                marker.showInfoWindow();
                                return true;
                            }
                        });
                    }
                    else
                        Toast.makeText(getApplicationContext(), "Unable to create Maps", Toast.LENGTH_SHORT).show();
                }
            }

    private void displayLocationOnMap()
    {
    Marker currentMarker = null;

                currentMarker = mMap.addMarker(new MarkerOptions()
                        .position(new LatLng(latitude, longitude))
 .title(Location)    .icon(BitmapDescriptorFactory.fromResource(R.drawable.map_view)));

                currentMarker.isInfoWindowShown();
                currentMarker.setVisible(true);
                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude(),longitude()), 8.0f));

                mMap.setTrafficEnabled(true);
                mMap.setBuildingsEnabled(true);
                mMap.setInfoWindowAdapter(new MarkerInfoWindowAdapter());
    }


public class MarkerInfoWindowAdapter implements GoogleMap.InfoWindowAdapter
    {
        public MarkerInfoWindowAdapter()
        {
        }

        @Override
        public View getInfoWindow(Marker marker)
        {
            return null;
        }

        @Override
        public View getInfoContents(Marker marker)
        {
            View v = getLayoutInflater().inflate(R.layout.custom_map_layout, null);

            MyMarker myMarker = mMarkersHashMap.get(marker);

            TextView marker_latitude = (TextView) v.findViewById(R.id.marker_latitude);

            TextView marker_longitude = (TextView) v.findViewById(R.id.marker_longitude);



            marker_latitude.setText("Latitude :" + latitude);

            marker_longitude.setText("Longitude:" +longitude);

            return v;
        }
    }