我一直忙于寻找如何在我的应用程序中的地图上的一个(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上的地图中获取当前位置

在 iPhone 中,我如何知道在使用正向地理编码时我的所有地图注释何时加载?

如何在没有谷歌地图 API 的情况下在我的应用程序中获取经度和纬度?

Java应用程序中的谷歌地图

在地图上的位置,然后我想详细说明他所居住的城市

在android中的地图上的两个名称之间寻找路线?