LocationManagerAndroid上的API似乎对于仅需要偶尔粗略估计用户位置的应用程序来说有点痛苦.
我正在处理的应用程序本身并不是一个位置应用程序,但它确实需要获取用户的位置才能显示附近的商家列表.它不需要担心用户是否在移动或类似的东西.
这是我想做的事情:
ActivityX中需要它时,它将可用.看起来它应该不那么难,但在我看来,我必须启动两个不同的位置提供商(GPS和NETWORK)并管理每个生命周期.不仅如此,我还必须在多个活动中复制相同的代码以满足#2.我曾尝试过使用getBestProvider()过去将解决方案缩减为只使用一个位置提供商,但这似乎只能为您提供最好的"理论"提供商,而不是实际上会给您带来最佳结果的提供商.
有没有更简单的方法来实现这一目标?
我需要以编程方式使用GPS获取当前位置.我怎样才能实现它?
我可以解析kml文件以显示Android中的路径或点吗?请你能帮助我吗?
这是kml示例代码,我想在android谷歌地图中显示:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Paths</name>
<description>Examples of paths. Note that the tessellate tag is by default
set to 0. If you want to create tessellated lines, they must be authored
(or edited) directly in KML.</description>
<Style id="yellowLineGreenPoly">
<LineStyle>
<color>7f00ffff</color>
<width>4</width>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style>
<Placemark>
<name>Absolute Extruded</name>
<description>Transparent green wall with yellow outlines</description>
<styleUrl>#yellowLineGreenPoly</styleUrl>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>absolute</altitudeMode>
<coordinates> -112.2550785337791,36.07954952145647,2357
-112.2549277039738,36.08117083492122,2357
-112.2552505069063,36.08260761307279,2357
-112.2564540158376,36.08395660588506,2357
-112.2580238976449,36.08511401044813,2357
-112.2595218489022,36.08584355239394,2357
-112.2608216347552,36.08612634548589,2357
-112.262073428656,36.08626019085147,2357
-112.2633204928495,36.08621519860091,2357
-112.2644963846444,36.08627897945274,2357
-112.2656969554589,36.08649599090644,2357
</coordinates>
<LineString>
</Placemark>
</Document>
</kml> …Run Code Online (Sandbox Code Playgroud) 在Android 1.0上有一个com.google.googlenav命名空间用于行车路线:
路线 - 改进了Google行车路线
但是在较新的SDK中,它被某些原因删除了......
Android:自API 1.0以来删除了DrivingDirections - 如何在1.5 /中执行1.6?
在黑莓手机上也缺少这样的API:
如何找到Blackberry中两个地方之间的路线?
CSIE-TW给出了一个解决方法(对于KML文件查询gmaps并解析它):
Android的-驾驶方向(路由路径)
也安德烈取得了DrivingDirections辅助类为Android.
我在j2me中为这个功能写了一个小助手,所以我想在Android和BlackBerry上分享我的样本.
更新
正如评论中所述,Google Maps API服务条款并未正式允许:
Google地图/ Google地球API服务条款
上次更新时间:2009年5月27日
...
10.许可限制.除非条款明确允许,或者除非您事先获得Google(或适用的特定内容提供商)的书面授权,否则Google的上述许可均受您遵守以下所有限制的约束.除非第7节或Maps API文档中明确允许,否则您不得(也不允许任何其他人):
...
10.9将服务或内容与任何产品,系统或应用程序一起使用或与之相关:
(a)实时导航或路线引导,包括但不限于与用户的传感器使能设备的位置同步的逐向路线引导;
并且可能对某些应用程序禁用(不知何故,至少在Android上)...来自.NET会话中的Geocode抓取:
API使用条款不允许这样做.您不应该刮掉谷歌地图来生成地理编码.我们将阻止对我们的服务器进行自动查询的服务.
Bret Taylor
Google地图产品经理
将不胜感激任何替代和/或建议!
谢谢!
我想开发一个应用程序,我希望通过获取当前位置来显示用户附近(1公里内)附近地点的信息.
比如说我想显示有关距离Android设备当前位置1公里范围内的餐馆,购物中心,医院的信息.
我已经浏览了这个链接:在Android中使用Google Places API ..但没有得到更多.
有没有人在Android中使用过Google Places API?
我正在尝试使用Google Places API获取附近地点的列表.我已从Google Devloper控制台启用了需要的API并拥有有效的API密钥.我能够得到我的位置.在我得到我当前的位置后,我试图获得附近的地方列表,但它返回空.
我也尝试过给予null PlaceFilter但是它给出了相同的结果.
private class MyGoogleMapOnMyLocationListener implements
OnMyLocationChangeListener,
ConnectionCallbacks,
OnConnectionFailedListener {
private GoogleApiClient mGoogleApiClient;
@Override
public void onMyLocationChange(Location location) {
if (!hasLastLocation) {
hasLastLocation = true;
mLastLocation = location;
Log.d(LOG_TAG, "Location: " + location.toString());
if (googleMap != null ) {
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(location.getLatitude(), location.getLongitude()), 16.0f));
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient
.Builder(getActivity())
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
}
}
}
}
@Override
public void onConnected(Bundle bundle) {
Log.d(LOG_TAG, "Google Api Client …Run Code Online (Sandbox Code Playgroud) android ×6
geolocation ×3
google-maps ×2
location ×2
android-maps ×1
blackberry ×1
gps ×1
java-me ×1
kml ×1