谷歌地图在两个点A和B之间。但是,这两个点都将自动设置

时间:2016-03-18 14:35:40

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

我想使用预先填充源地址和目的地地址的地图。

就像,我会提示用户选择当前位置,即A点。(我已经这样做了)。然后,我会根据他/她的位置列出一些地方。现在,我想直接将该地址带到目标地址,即B点。我将向用户显示路线和精确距离。你能告诉我如何为B点的地址添加前缀,如上所述吗?

但是,这两个地点都会随时改变。 例如,

我目前的位置是BTM Layout,班加罗尔,印度(来源)和我想去的餐厅位于印度班加罗尔的Koramangala(目的地)。 后来我改变主意,想去另一家位于印度班加罗尔Marathahalli的餐馆(目的地)。在这种情况下,我的源地址也发生了变化,它现在的HSR布局,班加罗尔,印度。

我的应用会在这两个位置之间绘制一张地图。 有人可以帮帮我吗?怎么做?有可能得到这样的方向吗?

1 个答案:

答案 0 :(得分:1)

如果你唯一的问题是关于缩放,你可以尝试这样的事情:

  1. 从两点开始创建位置对象(假设它们都在LatLng对象中)

    // Start position
    Location locStart = new Location("");
    locStart.setLatitude(lngStart.latitude);
    locStart.setLongitude(lngStart.longitude);
    
    // End position
    Location locEnd = new Location("");
    locEnd.setLatitude(lngEnd.latitude);
    locEnd.setLongitude(lngEnd.longitude);
    
  2. 获取两点之间的距离

    double distance = locStart.distanceTo(locEnd);
    
  3. 获得正确的缩放级别

    Maps API使用缩放级别(0 =远处...... 20 =建筑物),因此您必须找到一种在距离(以米为单位)和缩放级别之间切换的方法。

    int level;
    
    if (distance < 500) level = 1;
    else if (distance >= 500 && distance < 2000) level = 2;
    // and continue ...
    

    (值仅用于示例,未经测试)

  4. 获取虚拟中点

    (所以你可以将你的地图居中)

    检查answer,我的数学不好:)

  5. 更新地图

    map.moveCamera(CameraUpdateFactory.newLatLngZoom(midpoint, level));
    
  6. 我希望它会对你有所帮助:)。