EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:在地图上显示当前位置

本主题描述如何使用JavaScript代码直接访问dxMap小部件,以及如何在Mobile应用程序中的地图上显示当前位置。

  • ShowCurrentLocationController视图控制器添加到Mobile模块项目中。
  • 在构造函数中,例如,将ViewController.TargetViewId属性设置为MapsMarker_ListView
  • 重写OnViewControlsCreated方法,并访问MobileMapsListEditor列表编辑器及其Map控件。
  • 使用字符串(这是JavaScript客户端事件)指定控件的Map.OnCustomize属性,以使用navigator.geolocation.getCurrentPosition()方法获取当前位置,并将该位置设置为地图的中心。请注意,JavaScript代码应放在方括号中。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Maps.Mobile;
using DevExpress.ExpressApp.Maps.Mobile.Editors;
//...
public class ShowCurrentLocationController : ViewController<ListView> {
    public ShowCurrentLocationController() {
        TargetViewId = "MapsMarker_ListView";
    }
    protected override void OnViewControlsCreated() {
        base.OnViewControlsCreated();
        MobileMapsListEditor mobileMapsListEditor = View.Editor as MobileMapsListEditor;
        if (mobileMapsListEditor != null) {
            Map map = mobileMapsListEditor.Control as Map;
            map.OnCustomize = GetCustomizeScript();
        }
    }
    private string GetCustomizeScript() {
        return
        @"(function(mapInstance) {
            mapInstance.on('ready', function(e) {
                var googleMap = e.originalMap;    
                var showError = (function(errorText) {
                    DevExpress.ui.notify({ closeOnClick: true, message: errorText, type: 'error' }, 'error', 5000);
                });                        
                if (navigator.geolocation) {
                    navigator.geolocation.getCurrentPosition(function(position) {
                        var pos = {
                            lat: position.coords.latitude,
                            lng: position.coords.longitude
                        };
                        var infoWindow = new google.maps.InfoWindow({map: googleMap});
                        infoWindow.setPosition(pos);
                        infoWindow.setContent('Current location.');
                        googleMap.setCenter(pos);
                    }, 
                    function(error) {
                        var errorText = '';
                        switch(error.code) {
                            case error.PERMISSION_DENIED:
                                errorText = 'User denied the request for Geolocation.'
                                break;
                            case error.POSITION_UNAVAILABLE:
                                errorText = 'Location information is unavailable.'
                                break;
                            case error.TIMEOUT:
                                errorText = 'The request to get user location timed out.'
                                break;
                            case error.UNKNOWN_ERROR:
                                errorText = 'An unknown error occurred.'
                                break;
                        }
                        showError(errorText);                            
                    });
                } else { showError('Your browser does not support geolocation'); }
            });
        })";
    }
}

结果显示在下图中。

CurrentLocationOnMap_Mobile

转载保留此链接,注明出处