Map 如何在地图上显示更多点(地质点)?
目前,我可以显示一个点,即我在代码中装箱的第一个点(pointStatie),但我希望同时显示这两个点。 我希望显示我所在的点和我从另一个类传递坐标的另一个点 我目前的代码是:Map 如何在地图上显示更多点(地质点)?,map,point,Map,Point,目前,我可以显示一个点,即我在代码中装箱的第一个点(pointStatie),但我希望同时显示这两个点。 我希望显示我所在的点和我从另一个类传递坐标的另一个点 我目前的代码是: package aexp.elistcbox; import android.os.Bundle; import android.provider.SyncStateContract.Constants; import com.google.android.maps.MapActivity; import com.g
package aexp.elistcbox;
import android.os.Bundle;
import android.provider.SyncStateContract.Constants;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MapController;
import com.google.android.maps.GeoPoint;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.Criteria;
import android.util.Log;
import android.widget.Toast;
import android.location.Geocoder;
import android.location.Address;
import java.util.List;
import java.util.Locale;
import java.io.*;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
public class GPSLocatorActivity extends MapActivity
{
public MapView mapView;
public MapController mapController;
public LocationManager locationManager;
public LocationListener locationListener;
public String best;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_view);
mapView = (MapView) findViewById(R.id.mapView);
mapView.setSatellite(false);
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
mapController.setZoom(13);
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locationListener = new GPSLocationListener();
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
double longitudine = extras.getDouble("long");
double latitudine = extras.getDouble("lat");
((GPSLocationListener) locationListener).setLongitudine(longitudine);
((GPSLocationListener) locationListener).setLatitudine(latitudine);
Log.e("longitudine", "* " + ((GPSLocationListener) locationListener).setLongitudine(longitudine));
Log.e("latitudine", "* " + ((GPSLocationListener) locationListener).setLatitudine(latitudine));
}
String provider = null;
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
provider = LocationManager.GPS_PROVIDER;
} else
if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
provider = LocationManager.NETWORK_PROVIDER;
}
if(provider != null) {
locationManager.requestLocationUpdates(provider, 60000, 15, locationListener);
}
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
best = locationManager.getBestProvider(crit, false);
locationManager.requestLocationUpdates(best, 60000, 15, locationListener);
Location loc = locationManager.getLastKnownLocation(provider);
locationListener.onLocationChanged(loc);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
@Override
protected void onResume() {
super.onResume();
//locationManager.requestLocationUpdates(best, 10000, 1, locationListener);
Toast.makeText(this, "GPS tracking started",
Toast.LENGTH_SHORT).show();
// Start location updates; 5s/5m
LocationManager locManager = (LocationManager)getSystemService(
Context.LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
60000, 15, locationListener);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = locManager.getBestProvider(crit, true);
Location loc = locManager.getLastKnownLocation(provider);
}
@Override
protected void onPause() {
super.onPause();
//locationManager.removeUpdates(locationListener);
Toast.makeText(this, "GPS tracking stopped",
Toast.LENGTH_SHORT).show();
LocationManager locManager = (LocationManager)getSystemService(
Context.LOCATION_SERVICE);
locManager.removeUpdates(locationListener);
}
private class GPSLocationListener implements LocationListener
{
double longitudine;
double latitudine;
public double setLongitudine(double longitudine) {
return this.longitudine = longitudine;
}
public double setLatitudine(double latitudine) {
return this.latitudine = latitudine ;
}
public void onLocationChanged(Location location) {
Toast.makeText(GPSLocatorActivity.this, "Te plimbi",
Toast.LENGTH_SHORT).show();
if (location != null) {
Log.e("longitudine", "*2 " + longitudine);
Log.e("latitudine", "*2 " + latitudine);
GeoPoint pointStatie = new GeoPoint(
(int) (latitudine * 1E6),
(int) (longitudine * 1E6));
GeoPoint point = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
// afisaza coordonatele
/*
Toast.makeText(getBaseContext(),
"Latitude: " + location.getLatitude() +
" Longitude: " + location.getLongitude(),
Toast.LENGTH_SHORT).show();
*/
mapController.animateTo(point);
mapController.animateTo(pointStatie);
mapController.setZoom(13);
//mapView.invalidate();
// add marker for people point
MapOverlay mapOverlay = new MapOverlay();
mapOverlay.setPointToDraw(point);
mapOverlay.setPointToDraw(pointStatie);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
String address = ConvertPointToLocation(point);
Toast.makeText(getBaseContext(), address, Toast.LENGTH_SHORT).show();
String addressStatie = ConvertPointToLocation(pointStatie);
Toast.makeText(getBaseContext(), addressStatie, Toast.LENGTH_SHORT).show();
}
}
public String ConvertPointToLocation(GeoPoint point) {
String address = "";
Geocoder geoCoder = new Geocoder(
getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(
point.getLatitudeE6() / 1E6,
point.getLongitudeE6() / 1E6, 1);
if (addresses.size() > 0) {
for (int index = 0;
index < addresses.get(0).getMaxAddressLineIndex(); index++)
address += addresses.get(0).getAddressLine(index) + " ";
}
}
catch (IOException e) {
e.printStackTrace();
}
return address;
}
class MapOverlay extends Overlay
{
private GeoPoint pointToDraw;
public void setPointToDraw(GeoPoint point) {
pointToDraw = point;
}
public GeoPoint getPointToDraw() {
return pointToDraw;
}
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
super.draw(canvas, mapView, shadow);
// convert point to pixels
Point screenPts = new Point();
mapView.getProjection().toPixels(pointToDraw, screenPts);
// add marker
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.mark_red);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
}
public void onProviderDisabled(String provider) {
}
public void onProviderEnabled (String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}
包aexp.elistcbox;
导入android.os.Bundle;
导入android.provider.SyncStateContract.Constants;
导入com.google.android.maps.MapActivity;
导入com.google.android.maps.MapView;
导入com.google.android.maps.MapController;
导入com.google.android.maps.GeoPoint;
导入android.content.Context;
导入android.content.Intent;
导入android.content.res.Resources;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.location.Criteria;
导入android.util.Log;
导入android.widget.Toast;
导入android.location.Geocoder;
导入android.location.Address;
导入java.util.List;
导入java.util.Locale;
导入java.io.*;
导入com.google.android.maps.Overlay;
导入com.google.android.maps.OverlayItem;
导入android.graphics.Canvas;
导入android.graphics.Point;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.graphics.drawable.drawable;
公共类GPSLocatorActivity扩展了MapActivity
{
公共地图视图;
公共地图控制器;
公共场所经理;
公共场所监听器场所监听器;
公共字符串最好;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.map\u视图);
mapView=(mapView)findViewById(R.id.mapView);
mapView.setSatellite(假);
mapView.SetBuilTinZoomControl(真);
mapController=mapView.getController();
mapController.setZoom(13);
locationManager=(locationManager)getSystemService(Context.LOCATION\u服务);
locationListener=新的GPSLocationListener();
Bundle extras=getIntent().getExtras();
如果(附加值!=null)
{
double longitudine=额外的getDouble(“长”);
双纬度=额外的双纬度(“纬度”);
((GPSLocationListener)locationListener).setLongitudine(longitudine);
((GPSLocationListener)locationListener).setLatitudine(latitudine);
Log.e(“longitudine”,“*”+((GPSLocationListener)locationListener).setLongitudine(longitudine));
Log.e(“latitudine”,“*”+((GPSLocationListener)locationListener).setLatitudine(latitudine));
}
字符串提供程序=null;
if(locationManager.isProviderEnabled(locationManager.GPS\U提供程序)){
provider=LocationManager.GPS\u provider;
}否则
if(locationManager.isProviderEnabled(locationManager.NETWORK_PROVIDER)){
provider=LocationManager.NETWORK\u provider;
}
if(提供程序!=null){
locationManager.RequestLocationUpdate(提供者,60000,15,locationListener);
}
Criteria crit=新标准();
临界设定精度(标准精度);
best=locationManager.getBestProvider(crit,false);
locationManager.RequestLocationUpdate(最佳,60000,15,locationListener);
Location loc=locationManager.getLastKnownLocation(提供者);
locationListener.onLocationChanged(loc);
}
@凌驾
受保护的布尔值isRouteDisplayed(){
返回false;
}
@凌驾
受保护的void onResume(){
super.onResume();
//locationManager.RequestLocationUpdate(最佳,10000,1,locationListener);
Toast.makeText(这是“GPS跟踪开始”,
吐司。长度(短)。show();
//开始位置更新;5s/5m
LocationManager LocationManager=(LocationManager)getSystemService(
上下文、位置和服务);
LocationManager.RequestLocationUpdate(LocationManager.GPS\u提供程序,
60000,15,locationListener);
Criteria crit=新标准();
临界设定精度(标准精度);
字符串提供程序=locManager.getBestProvider(crit,true);
Location loc=locManager.getLastKnownLocation(提供者);
}
@凌驾
受保护的void onPause(){
super.onPause();
//locationManager.RemoveUpdate(locationListener);
Toast.makeText(这是“GPS跟踪停止”,
吐司。长度(短)。show();
LocationManager LocationManager=(LocationManager)getSystemService(
上下文、位置和服务);
LocationManager.RemoveUpdate(locationListener);
}
私有类GPSLocationListener实现LocationListener
{
双纵联;
双纬度;
公共双经纬仪(双经纬仪){
返回此项。longitudine=longitudine;
}
公共双纬度(双纬度){
返回this.latitudine=latitudine;
}
public void onLocationChanged(位置){
Toast.makeText(GPSLocatorActivity.this,“Te plimbi”,
吐司。长度(短)。show();
如果(位置!=null){
Log.e(“长尾鸟”和“*2”+长尾鸟);
Log.e(“纬度”、“2”+纬度);
GeoPoint pointStatie=新的地质点(
(国际)(纬度*1E6),
(内部)(纵向*1E6));
地质点=新的地质点(
(int)(location.getLatitude()*1E6),
(int)(location.getLongitude()*1E6));
//阿菲萨科多纳泰勒酒店
/*
Toast.makeText(getBaseContext(),
“纬度:”+位置。getLatitude()+
“经度:”+location.getLongitude(),
吐司。长度(短)。show();
*/
mapController.animateTo(点);
mapController.animateTo(pointStatie);
mapController.setZoom(13);
//mapView.invalidate();
//为人员点添加标记
MapOverlay MapOverlay=ne
GeoPoint point2 = new GeoPoint(
(int) (location2.getLatitude() * 1E6),
(int) (location2.getLongitude() * 1E6));
mapOverlay.setPointToDraw(point2);