我想用GPS信号跟踪设备。同时显示纬度,经度,高度和速度。

我使用此代码,但屏幕上没有结果:

@Override
protected void onGpsTracker_ButtonAction(Component c, ActionEvent event) {
    try {
        int i = 0;
        Location loc = mylocLocationManager.getCurrentLocation();
        if(loc.getStatus()==LocationManager.AVAILABLE) {
        } else {
            Dialog.show("Error!", "Falla de señal", "OK", null);
        }
        mylocLocationManager.setLocationListener(new LocationListener() {
            public void locationUpdated(Location location) {
                gpsLocation= location;
                Component c = null;
                Label labelalt = (Label)findByName("altitudT", c);
                Label labellat = (Label)findByName("latitudT", c);
                Label labellng = (Label)findByName("longitudT", c);
                Label labeldist = (Label)findByName("distanciaT", c);
                Label labelspeed = (Label)findByName("speedT", c);
                altmax= location.getAltitude();
                double lat = location.getLatitude();
                double lng = location.getLongitude();
                float speed =  location.getVelocity();

                double alt = location.getAltitude();
                velprompos = velprompos + 1;
                totspeed = (int) (totspeed + speed);
                velopro = totspeed / velprompos;
                totalt = altmax - alt;

                velmax=speed;
                Coord lastLocation = new Coord(lat, lng);
                mapComponent.zoomTo(lastLocation, 15);

                prevdistance = totdistance;
                prevLon = currentLon;
                prevLat = currentLat;
                String Salt = String.valueOf(alt);
                labelalt.setText(Salt);
                String Slat = String.valueOf(lat);
                labellat.setText(Slat);
                String Slng = String.valueOf(lng);
                labellng.setText(Slng);
                String Sspeed = String.valueOf(speed);
                labelspeed.setText(Sspeed);

                //aca hay q pner dibujo lineas
            }

            public void providerStateChanged(int newState) {
                //positionMethod();
            }
        });
    } catch (Exception ex) {
        ex.printStackTrace();
        gpsLocation = null;
    }
}


这个想法是在移动设备时获取位置,并在某些标签上显示此结果。有什么帮助吗?

最佳答案

您错误地实现了几件事。


@override添加到诸如locationUpdatedproviderStateChanged的替代方法中。
不要将Component c重新声明为并将其设置为null
通过使用find方法直接调用标签并通过c作为参数来获取标签
每次更新后,revalidaterepaint您的表单。
作为一般建议,保持变量声明的一致性,将芒果数声明为numOfMangoes,而不是numberofmangoesnumofmangoesNumberofmangoes

@Override
protected void onGpsTracker_ButtonAction(Component c, ActionEvent event) {
    try {
        int i = 0;
        Location loc = mylocLocationManager.getCurrentLocation();
        if (loc.getStatus() == LocationManager.AVAILABLE) {
            System.out.println("Location available");
        } else {
            Dialog.show("Error!", "Falla de señal", "OK", null);
        }
        final LocationManager mylocLocationManager = LocationManager.getLocationManager();
        mylocLocationManager.setLocationListener(new LocationListener() {
            @Override
            public void locationUpdated(Location location) {
                gpsLocation = location;
                Label labelspeed = ;
                altmax = location.getAltitude();
                double lat = location.getLatitude();
                double lng = location.getLongitude();
                float speed = location.getVelocity();

                double alt = location.getAltitude();
                velprompos = velprompos + 1;
                totspeed = (int) (totspeed + speed);
                velopro = totspeed / velprompos;
                totalt = altmax - alt;

                velmax = speed;
                Coord lastLocation = new Coord(lat, lng);
                mapComponent.zoomTo(lastLocation, 15);

                prevdistance = totdistance;
                prevLon = currentLon;
                prevLat = currentLat;
                String Salt = String.valueOf(alt);
                findAltitudT(c).setText(Salt);
                String Slat = String.valueOf(lat);
                findLatitudT(c).setText(Slat);
                String Slng = String.valueOf(lng);
                findLongitudT(c).setText(Slng);
                String Sspeed = String.valueOf(speed);
                findSpeedT(c).setText(Sspeed);

                c.getComponentForm().revalidate();
                //aca hay q pner dibujo lineas
            }

            @Override
            public void providerStateChanged(int newState) {
                //positionMethod();
            }
        });

    } catch (Exception ex) {
        ex.printStackTrace();
        gpsLocation = null;
    }
}

10-05 23:30