在Android应用中使用Google Maps API / Google Maps Directions API

时间:2015-09-20 20:57:38

标签: android api google-maps google-maps-api-3 google-maps-markers

我有一个用于搜索航班的Android应用。我想实现一个谷歌地图,其中原点和目的地将根据他/她的输入显示在地图中(借助一些标记)给用户。但在我开始任何事情之前,我需要在整体理解方面提供帮助。

  1. 我需要哪种API? Google Maps API或Google Maps Direction API?我不想显示任何方向,只显示标记的地方。
  2. 是否有针对Google Maps API的HTTP请求?或者如何动态显示地图中的位置?我只会说这些地方的名字。
  3. 如果有人可以指导我完成此实施的初始步骤,我将非常感激。

    编辑:

    以下是我正在使用的主要活动:

    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 个答案:

答案 0 :(得分:1)

  1. Google Maps API应该足够了。
  2. 如果您有位置,则可以为每个地点添加标记https://developers.google.com/maps/documentation/android-api/marker
  3. 获取cooridnates: How to get coordinates of an address in android