微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Yandex Mapkit 按点或按名称搜索请求总是返回空值,为什么?

如何解决Android Yandex Mapkit 按点或按名称搜索请求总是返回空值,为什么?

这是我的示例,我点击地图以获取点击的点坐标并发送搜索请求以了解有关该地点的更多详细信息,例如城市、街道。但响应始终为空值。

public class MainActivity extends AppCompatActivity implements CameraListener,InputListener,Session.SearchListener {

    private ActivityMainBinding binding;
    private SearchManager searchManager;
    private Session searchSession;
    private SearchOptions searchOptions;
    private MapObjectCollection mapObjectCollection;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        MapKitFactory.setApiKey("your api key");
        MapKitFactory.initialize(this);
        searchOptions = new SearchOptions();
        searchOptions.setSearchTypes(SearchType.GEO.value);
        searchOptions.setGeometry(true);

        binding = DataBindingUtil.setContentView(this,R.layout.activity_main);

        binding.mapview.getMap().setNightModeEnabled((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES);

        searchManager = SearchFactory.getInstance().createSearchManager(SearchManagerType.COMBINED);
        binding.mapview.getMap().addCameraListener(this);
        binding.mapview.getMap().addInputListener(this);
        mapObjectCollection = binding.mapview.getMap().getMapObjects();

        binding.mapview.getMap().move(
                new CameraPosition(new Point(55.751574,37.573856),11.0f,0.0f,0.0f),new Animation(Animation.Type.SMOOTH,0),null);
    }

    @Override
    protected void onStop() {
        super.onStop();
        binding.mapview.onStop();
        MapKitFactory.getInstance().onStop();
    }

    @Override
    protected void onStart() {
        super.onStart();
        binding.mapview.onStart();
        MapKitFactory.getInstance().onStart();
    }

    public void submitQueryByName(String query) {
        searchSession = searchManager.submit(
                query,Geometry.fromPoint(new Point(40.177200,44.503490)),searchOptions,this);
    }

    public void submitQueryByPoint(Point point) {
        searchSession = searchManager.submit(
                point,11,this);
    }

    @Override
    public void onCameraPositionChanged(@NonNull Map map,@NonNull CameraPosition cameraPosition,@NonNull CameraUpdateReason cameraUpdateReason,boolean finished) {
        Log.e("onCameraPositionChanged"," cameraPosition: "+cameraPosition+" cameraUpdateReason: "+cameraUpdateReason+" finished: "+finished);
    }

    @Override
    public void onMapTap(@NonNull Map map,@NonNull Point point) {
        MapObjectCollection mapObjects = binding.mapview.getMap().getMapObjects();
        mapObjects.clear();

        PlacemarkMapObject placemarkMapObject = mapObjectCollection.addplacemark(new Point(point.getLatitude(),point.getLongitude()),ImageProvider.fromresource(this,R.mipmap.marker_flag));

        submitQueryByPoint(point);
        Log.e("onMapTap","point lat - lang: " + point.getLatitude() + " : " + point.getLongitude());
    }

    @Override
    public void onMapLongTap(@NonNull Map map,@NonNull Point point) {
        Log.e("onMapLongTap","onMapLongTap");
    }

    @Override
    public void onSearchResponse(@NonNull Response response) {
        try {
            Log.e("Search","Response: " + response);
        } catch (NullPointerException e) {
            e.printstacktrace();
        }
    }

    @Override
    public void onSearchError(@NonNull Error error) {
        String errorMessage = "unkNown_error_message";
        if (error instanceof RemoteError) {
            errorMessage = "remote_error_message";
        } else if (error instanceof NetworkError) {
            errorMessage = "network_error_message";
        }
        Log.e("Response error"," error: " + errorMessage);
    }
}

在onMapTap方法中,我得到了被敲击的点坐标并按点发送搜索请求

@Override
    public void onMapTap(@NonNull Map map,"point lat - lang: " + point.getLatitude() + " : " + point.getLongitude());
    }

**响应始终为空值。我做错了什么?

这是此示例的 GitHub 整个项目 https://github.com/davmehrabyan/YandexMapSearch **

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。