2016-09-26 7 views
0

ここに状況があります。私は1つの経度と緯度のときにのみ表示されるマーカーを作成しようとしています。私はLatLngBoundsを最初からマップ上の1桁のマーカー内にマッチさせるようにしています。Googleマップマーカーの設定と境界の割り当て - Android

私はすべてを稼働させることはできますが、同時に行うことはできません。私はIf/Elseステートメントで間違ったことをする必要があります。

protected void onPostExecute(Address address) { 
     mMap.clear(); 
     if (address == null) { 
      Toast.makeText(MainActivity.this, R.string.invalid_entry, Toast.LENGTH_LONG).show(); 
     } else { 
      String addressName = ""; 
      for (int i = 0; i < address.getMaxAddressLineIndex(); i++) { 
       addressName += " - " + address.getAddressLine(i); 
      } 

      Double longitude = address.getLongitude(); 
      Double latitude = address.getLatitude(); 

      LatLng position = new LatLng(address.getLatitude(), address.getLongitude()); 

      LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
      builder.include(position); 
      builder.include(position); 

      //search location 
      mMap.addMarker(new MarkerOptions().position(position).title(addressName) 
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))); 

      for (int i = 0; i < markers.size(); i++) { 
       Double distanceLng = Math.abs(markers.get(i).longitude - longitude); 
       Double distanceLat = Math.abs(markers.get(i).latitude - latitude); 
       if ((distanceLng < 1) && (distanceLat < 1)) { 
        mMap.addMarker(new MarkerOptions() 
          .position(markers.get(i)) 
          .title("Place") 
          .snippet("Description")); 
        builder.include(markers.get(i)); 
        LatLngBounds bounds = builder.build(); 
        int padding = 50; // offset from edges of the map in pixels 
        CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); 
        Log.d(TAG, "DistanceBounds: " + bounds); 
        Log.d(TAG, "DistancePadding: " + padding); 
        Log.d(TAG, "DistanceI: " + i); 
        mMap.moveCamera(cu); 
       } 
       else { 
        Toast.makeText(MainActivity.this, R.string.no_places_in_area,Toast.LENGTH_LONG); 
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position, 10)); 
        Log.d(TAG, "DistanceLng Failed = " + distanceLng + "i = " + i); 
        Log.d(TAG, "DistanceLat Failed = " + distanceLat + "i = " + i); 
       } 
      } 


     } 

正しいコードを書く上での助けに感謝します!

+0

あなたは 'builder.include(position);'を2回追加しています(おそらくtypo –

+0

) ''経度と緯度が離れています 'と言ったとき、 'distanceLng'を' distanceLat'から引きます。 –

答えて

0

Math.abs()メソッドを呼び出して、指定された数値の絶対値を返します。つまり、Math.abs(-10)は10を返します。Math.floorまたはMath.ceilを使用することをお勧めしますあなたの要件。

System.out.println(Math.ceil(25.46)); // Prints 26 
System.out.println(Math.floor(25.46)); // Prints 25 

これにより、正確な減算値が得られます。緯度と経度の値は常に2倍であるため、必要に応じて1の正確な値を得ることはできません。

関連する問題