0

我想在我的Android應用程序中實現Google地圖的更簡單的實現。我能夠啓動Google地圖,但我無法在其中顯示多個標記。如果我保留硬編碼的地方的緯度和經度值和名稱,然後事情工作,但動態與變量和字符串值我無法顯示它們。 我也經歷了很多人在這裏提出的這個link。但我真正想要的是更簡單的實施。無法在Google地圖中添加多個標記

下面是我在我的主要活動都使用的代碼:

public class Map_Activity_With_Fragment extends AppCompatActivity implements OnMapReadyCallback { 

private GoogleMap googleMap; 
String Origin, Destination, Start_Date, Num_Adult, Num_Infant, Origin_Map, Destination_Map; 
Context context; 
List<Address> Addr_Origin, Addr_Dest; 
double latitude_origin, longitude_origin, latitude_destination, longitude_destination; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent intent = getIntent(); 
    Bundle extras = intent.getExtras(); 
    Origin = extras.getString(MainActivity.ORIGIN); 
    Destination = extras.getString(MainActivity.DESTINATION); 
    Start_Date = extras.getString(MainActivity.START_DATE); 
    Num_Adult = extras.getString(MainActivity.ADULT); 
    Num_Infant = extras.getString(MainActivity.INFANT); 
    Origin_Map = extras.getString(MainActivity.ORIGIN_MAP); 
    Destination_Map = extras.getString(MainActivity.DESTINATION_MAP); 
    context = Map_Activity_With_Fragment.this; 
    setTitle("Location Map"); 
    setContentView(R.layout.activity_map__with__fragment); 

    try 
    { 
     initializeMap(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_map__with__fragment, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onMapReady(GoogleMap googleMap) 
{ 
    AddMarkers(googleMap); 
} 


@Override 
protected void onResume() { 
    super.onResume(); 
    initializeMap(); 
} 

private void initializeMap() 
{ 
    if (googleMap == null) { 
     MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 
} 

private void AddMarkers(GoogleMap googleMap) 
{ 
    try { 
     Geocoder geocoder = new Geocoder(context); 
     Addr_Origin = geocoder.getFromLocationName(Origin_Map, 1); 
     Addr_Dest = geocoder.getFromLocationName(Destination_Map, 1); 
     if (Addr_Origin.size() > 0) { 
      latitude_origin = Addr_Origin.get(0).getLatitude(); 
      longitude_origin = Addr_Origin.get(0).getLongitude(); 
     } 
     if (Addr_Dest.size() > 0) { 
      latitude_destination = Addr_Dest.get(0).getLatitude(); 
      longitude_destination = Addr_Dest.get(0).getLongitude(); 
     } 
     Marker m1 = googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude_origin, longitude_origin)).title(Origin_Map)); 
     Marker m2 = googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude_destination, longitude_destination)).title(Destination_Map)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 

請幫我! 在此先感謝!

回答

1

好的,所以我要更新我自己的問題。

我正在API級別16的設備上測試這些代碼更改,因此標記和多段線沒有正確呈現。然後,我在API級別19的設備上測試了相同的代碼,並且它工作得很好。我沒有修改任何代碼的一部分。事情正在起作用。 :)

相關問題