我一直忙于寻找如何在我的应用程序中的地图上的一个(GPS)点和一个标记之间画一条线。有人可以吗?
Posted
技术标签:
【中文标题】我一直忙于寻找如何在我的应用程序中的地图上的一个(GPS)点和一个标记之间画一条线。有人可以吗?【英文标题】:I've been busy for a long time finding out how to draw a line between one (GPS) points and one marker on the map in my application. can someone? 【发布时间】:2016-01-08 03:51:39 【问题描述】:我的地理位置和标记有不同的文件:D 我想做的是画一条线......我的位置(使用 gps)到我已经在应用程序中输入的标记。如果我点击一个标记,我选择会有一行 :) 谢谢我是新手,请帮助我..
//this is my locationHelper
public static GoogleMap getStoreList(GoogleMap googleMap)
// create marker
MarkerOptions seveneleven = new MarkerOptions().position(new LatLng(14.616737, 120.982916)).title("7-Eleven");
googleMap.addMarker(seveneleven);
MarkerOptions sevenelevenRecto = new MarkerOptions().position(new LatLng(14.601643, 120.988580)).title("7-Eleven Recto");
googleMap.addMarker(sevenelevenRecto);
MarkerOptions newestGroceryEnColdStore = new MarkerOptions().position(new LatLng(14.597770, 120.983253)).title("Newest Grocery and Cold Store");
googleMap.addMarker(newestGroceryEnColdStore);
MarkerOptions savemoreStaCruz = new MarkerOptions().position(new LatLng(14.601845, 120.981116)).title("Savemore Sta Cruz");
googleMap.addMarker(savemoreStaCruz);
MarkerOptions sevenTondo = new MarkerOptions().position(new LatLng(14.63059, 120.97355 )).title("7-Eleven (Pampanga St, Tondo, Manila)");
googleMap.addMarker(sevenTondo);
MarkerOptions sevenTayuman = new MarkerOptions().position(new LatLng(14.65086, 120.98248 )).title("7-Eleven (Tayuman Road, Sta. Cruz, Manila)");
googleMap.addMarker(sevenTayuman);
MarkerOptions miniStopm = new MarkerOptions().position(new LatLng(14.64239, 120.98694 )).title("Ministop (Sampaloc, Manila))");
googleMap.addMarker(miniStopm);
MarkerOptions miniStopmm = new MarkerOptions().position(new LatLng(14.63657, 120.98505 )).title("Vosges Convenience Store (G/F Old Free Press Bldg Soler St, Quiapo, Manila))");
googleMap.addMarker(miniStopmm);
MarkerOptions miniStopmp = new MarkerOptions().position(new LatLng(14.60555, 120.98853 )).title("Mini Stop (Padre Campa St. Sampaloc, Manila)");
googleMap.addMarker(miniStopmp);
MarkerOptions savemoreStacruz = new MarkerOptions().position(new LatLng(14.57734, 120.99197 )).title("Savemore (Sta. Cruz, Manila)");
googleMap.addMarker(savemoreStacruz);
MarkerOptions super8recto = new MarkerOptions().position(new LatLng(14.601971, 120.987858)).title("Super 8 Recto");
googleMap.addMarker(super8recto);
return googleMap;
//this is my another file which is my geolocation in my mainActivity.
【问题讨论】:
【参考方案1】:如果您已经拥有源和目标的经纬度,则可以使用以下代码。
private List<LatLng> decodePoly(String encoded)
List<LatLng> poly = new ArrayList<LatLng>();
int index = 0, len = encoded.length();
int lat = 0, lng = 0;
while (index < len)
int b, shift = 0, result = 0;
do
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;
shift = 0;
result = 0;
do
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;
LatLng p = new LatLng( (((double) lat / 1E5)),
(((double) lng / 1E5) ));
poly.add(p);
return poly;
详情请参考link。
【讨论】:
我的地理位置和输入的标记有不同的文件。我需要把这些代码放在哪里? 如果可能,请在此处发布您的两个文件的完整代码。 字符串类别 = getIntent().getStringExtra("category"); /** * 为适当的类别设置标记 */ if(category.equalsIgnoreCase("CONVENIENCE STORES")) googleMap = LocationHelper.getStoreList(googleMap); else if(category.equalsIgnoreCase("HOSPITALS")) googleMap = LocationHelper.getHospilalList(googleMap); else if(category.equalsIgnoreCase("疏散中心")) googleMap = LocationHelper.getEvacCenterList(googleMap); 我把其他代码作为答案我不能把所有的代码都弄成一个大文件:3 如果你想看我的代码,我会给你:3 让你看。我只需要我的帮助 我应该将代码放到包含地图上标记的 LocationHelper 中,还是放到包含我的 gps 位置的 MainActivity 中?【参考方案2】: googleMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener()
@Override
public void onMyLocationChange(Location arg0)
googleMap.addMarker(new MarkerOptions().position(new LatLng(arg0.getLatitude(), arg0.getLongitude())).title("Your Location!"));
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(arg0.getLatitude(), arg0.getLongitude())) // Sets the center of the map to location user
.zoom(17) // Sets the zoom
//.bearing(90) // Sets the orientation of the camera to east
//.tilt(40) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
);
@Override
protected void onResume()
super.onResume();
initilizeMap();
【讨论】:
以上是关于我一直忙于寻找如何在我的应用程序中的地图上的一个(GPS)点和一个标记之间画一条线。有人可以吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone 中,我如何知道在使用正向地理编码时我的所有地图注释何时加载?