可以用百度地图的api,是免费的

解决方案 »

  1.   

    百度api包括手机开发和web开发,很好用
    http://developer.baidu.com/map/
      

  2.   


    可以得到公交实时到站信息???支持公交信息查询、公交换乘查询、驾车线路规划和步行路径检索。公交信息查询:可对公交详细信息进行查询;
    公交换乘查询:根据起、终点,查询策略,进行线路规划方案;
    驾车线路规划:提供不同策略,规划驾车路线;(支持设置途经点)
    步行路径检索:支持步行路径的规划。可以实时的知道某一辆公交车的具体位置,离本站的距离,比如还差了几站?
    公交车的具体位置是可以通过百度地图的api查询到的,但离本站的距离,比如还差了几站这个就要自己写逻辑算法了,应该不会提供这样的api
      

  3.   

    市面上已经有此类的产品了,比如"彩虹公交",是用图吧地图的api做出来的
      

  4.   

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >    <LinearLayout
            android:id="@+id/lltBtnplan"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >        <EditText
                android:id="@+id/txtTransit0"
                android:layout_width="fill_parent"
                android:layout_height="@dimen/S40dip"
                android:layout_margin="@dimen/S3dip"
                android:hint="@string/placeDeparture" />        <EditText
                android:id="@+id/txtTransit1"
                android:layout_width="fill_parent"
                android:layout_height="@dimen/S40dip"
                android:layout_margin="@dimen/S3dip"
                android:hint="@string/termini" />        <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:orientation="horizontal" >            <Button
                    android:id="@+id/btnMyPoint"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/myPoint" />            <Button
                    android:id="@+id/btnDist"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="@dimen/S15dip"
                    android:text="@string/distance" />            <Button
                    android:id="@+id/btnPlanPath"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="@dimen/S15dip"
                    android:text="@string/search" />
            </LinearLayout>        <LinearLayout
                android:id="@+id/lltTransitGress"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:orientation="horizontal"
                android:visibility="gone" >
            </LinearLayout>
        </LinearLayout>    <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >        <com.baidu.mapapi.map.MapView
                android:id="@+id/mvwTransitMap"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:clickable="true" />        <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignWithParentIfMissing="false"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="false"
                android:layout_marginBottom="@dimen/S10dip" >            <Button
                    android:id="@+id/btnPre"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="@dimen/S10dip"
                    android:layout_marginRight="@dimen/S10dip"
                    android:layout_weight="1.0"
                    android:background="@drawable/pre_"
                    android:visibility="gone" />            <Button
                    android:id="@+id/btnNext"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginLeft="@dimen/S10dip"
                    android:layout_marginRight="@dimen/S10dip"
                    android:layout_weight="1.0"
                    android:background="@drawable/next_"
                    android:visibility="gone" />
            </LinearLayout>
        </RelativeLayout></LinearLayout>
    package com.taocaiku.gaea.activity.test;import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.EditText;
    import com.baidu.platform.comapi.basestruct.GeoPoint;
    import com.taocaiku.gaea.R;
    import com.taocaiku.gaea.activity.pilot.MoreAct;
    import com.taocaiku.gaea.common.activity.PilotMapActivity;
    import com.taocaiku.gaea.domain.Domain;/**
     * 查询公交
     * @author TCK-001
     * @version 1.0
     */
    public class TransitAct extends PilotMapActivity {

    private EditText txtData0, txtData1;

    @Override
    protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);setContentView(R.layout.test_transit);app().addActivity(this);
    txtData0 = findView(R.id.txtTransit0);
    txtData1 = findView(R.id.txtTransit1);
    findViewById(R.id.btnMyPoint).setOnClickListener(getMyPoint());
    findViewById(R.id.btnDist).setOnClickListener(getDist());
    findViewById(R.id.btnPlanPath).setOnClickListener(getTransit());
    setMustView(R.id.lltTransitGress, R.id.lltBtnplan, R.id.btnPre, R.id.btnNext, R.id.mvwTransitMap);
    mapUtil.searchAddr(pointUtil.getMyPoint(), "myPointBack", gressLayout);
    }

    private OnClickListener getMyPoint() {
    return new OnClickListener() {
    public void onClick(View view) {
    mapUtil.searchAddr(pointUtil.getMyPoint(), "myPointBack", gressLayout);
    }
    };
    }

    public void myPointBack() {
    myProvince = mapUtil.getComponent().province;
    myCity = mapUtil.getComponent().city;
    txtData0.setText(mapUtil.getComponent().street + mapUtil.getComponent().streetNumber);
    }

    private OnClickListener getDist() {
    return new OnClickListener() {
    public void onClick(View view) {
    if (notNull(getText(txtData0), "出发地", true) && notNull(getText(txtData1), "目的地", true)) {
    mapUtil.searchPoint(myProvince + myCity, getText(txtData0), "getDist1", gressLayout);
    }
    }
    };
    }

    public void getDist1() {
    beginPoint = mapUtil.getAddrPoint();
    if (beginPoint[0] > 0d && beginPoint[1] > 0d) {
    mapUtil.searchPoint(myProvince + myCity, getText(txtData1), "getDist2", gressLayout);
    } else {
    prompt("出发地地址不全,路径规划失败");
    }
    }

    public void getDist2() {
    targetPoint = mapUtil.getAddrPoint();
    if (targetPoint[0] > 0d && targetPoint[1] > 0d) {
    GeoPoint[] points = new GeoPoint[] { mapUtil.getGeo(beginPoint), mapUtil.getGeo(targetPoint) };
    Drawable[] drawables = new Drawable[] { getResources().getDrawable(R.drawable.icon_e), getResources().getDrawable(R.drawable.icon_f) };
    mapUtil.setPoints(points, new String[] { "出发地", "目的地" }, drawables);
    alert(R.drawable.info, ((int) mapUtil.getDistance(beginPoint, targetPoint) + 1) + "米", "");
    } else {
    prompt("目的地地址不全,路径规划失败");
    }
    }

    private OnClickListener getTransit() {
    return new OnClickListener() {
    public void onClick(View view) {
    if (notNull(getText(txtData0), "出发地", true) && notNull(getText(txtData1), "目的地", true)) {
    mapUtil.searchPoint(myProvince + myCity, getText(txtData0), "getTransit1", gressLayout);
    }
    }
    };
    }

    public void getTransit1() {
    beginPoint = mapUtil.getAddrPoint();
    if (beginPoint[0] > 0d && beginPoint[1] > 0d) {
    mapUtil.searchPoint(myProvince + myCity, getText(txtData1), "getTransit2", gressLayout);
    } else {
    prompt("出发地地址不全,路径规划失败");
    }
    }

    public void getTransit2() {
    targetPoint = mapUtil.getAddrPoint();
    if (targetPoint[0] > 0d && targetPoint[1] > 0d) {
    mapUtil.planPath(beginPoint, targetPoint, myCity, 2, "planPathBack", gressLayout);
    } else {
    prompt("目的地地址不全,路径规划失败");
    }
    }

    @Override
    public void toBack(View view) {
    changeAct(MoreAct.class, null, Domain.RIGHT);
    }}
      

  5.   


    还要添加什么额外的jar包? 可否发一下了
      

  6.   

    你想一下原理,位置是通过GPS或网络定位得到的,得到后需要保存下来你才能使用吧,从保存的地方到你的应用程序之间,肯定得有一条通路吧,这条通路就需要有人去实现,也就是封装功能后,对外提供的API。只有这条路通了,你才能使用。
      

  7.   

    道理我还是懂的,只是在如何获取GPS的位置和取得API的问题上纠结....
      

  8.   

    http://www.taipei.gov.tw/ct.asp?xItem=3453609&ctNode=45112&mp=datataipei
    这个是台北的,需翻墙看