2017-03-04 17 views
0

私はこれをウェブで見たimage Googleマップの1つのパスに2つの異なるポリラインを2つ記入することが可能であることを確認しました。 Androidで道路の端にポリラインを整列するGoogle Maps

public static void drawEncodedPolyOnMap(String encoded, GoogleMap map) { 
    List<LatLng> points = new ArrayList<>(); 
    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))); 
     points.add(p); 
    } 

    map.addPolyline(new PolylineOptions().width(7).color(Color.RED).geodesic(true).addAll(points)); 
} 

しかし、それは私に私が基本的に

enter image description here

を期待ディスプレイを与えていない。これを実験する

は、私が最初にこのコードを使用しての唯一のポリラインを追加しようとしました私のケースでは、マーカが道路の端にあるにもかかわらず、ポリラインが中央に揃えられます。私は起こりたくない場合です。

Androidでマーカーとポリラインを揃えることはできますか?どうやって?

答えて

0

誰も答えていないようだし、私はちょうどそれを行う方法について知っていた。

基本的には、drawEncodedPolyOnMapを更新して、元に埋め込みを追加しましたLatLngbit shiftingによって返されました。だからここにコードを行く

public static void drawEncodedPolyOnMap(String encoded, GoogleMap map, boolean type) { 
    List<LatLng> points = new ArrayList<>(); 
    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; 
     double newLat = (((double) lat/1E5)); 
     double newLng = (((double) lng/1E5)); 

     if(type){ 
      points.add(new LatLng(newLat+PADDING_LAT, newLng+PADDING_LNG)); 
     }else{ 
      points.add(new LatLng(newLat-PADDING_LAT, newLng-PADDING_LNG)); 
     } 
    } 

    map.addPolyline(new PolylineOptions().width(7).color((type)?Color.RED:Color.GREEN).geodesic(true).addAll(points)); 
} 

それだけです。問題が解決しました。

関連する問題