Проблемы с размещением координат в текстовом поле для события DragEnd с Subgurim Maps - PullRequest
1 голос
/ 16 сентября 2011

Я пытаюсь создать перетаскиваемый маркер с помощью Subgurim и считываю последние переменные в текстовые поля.

У меня все работает, кроме той части, где я помещаю координаты в текстовое поле.

Кодовое обозначение:

protected void Page_Load(object sender, EventArgs e){
    if (SessionManager.User == null) {
        string strscript  = "<script language=javascript>window.top.close();</script>";
        if(!ClientScript.IsStartupScriptRegistered("clientScript")) {
            ClientScript.RegisterStartupScript(Page.GetType(), "clientScript", strscript);
        }
    }
    else {
        if (!Page.IsPostBack) {                
            gmap.Height = 400;
            gmap.Width = 590;
            gmap.enableDragging = true;
            gmap.Language = "pt";
            gmap.BackColor = Color.White;
            gmap.enableDragging = true;
            gmap.enableGoogleBar = true;

            gmap.Language = "pt";
            gmap.BackColor = Color.White;

            GControl nav = new GControl(GControl.preBuilt.LargeMapControl3D);
            GControl maptypes = new GControl(GControl.preBuilt.MenuMapTypeControl, new GControlPosition(GControlPosition.position.Top_Right));
            GControl scale = new GControl(GControl.preBuilt.ScaleControl, new GControlPosition(GControlPosition.position.Bottom_Left));
            GControl overview = new GControl(GControl.preBuilt.GOverviewMapControl, new GControlPosition(GControlPosition.position.Bottom_Right));

            gmap.addControl(nav);
            gmap.addControl(maptypes);
            gmap.addControl(scale);
            gmap.addControl(overview);

            GLatLng pt=null;
            int zoom = 16;

            string lat = Request.QueryString["lat"];
            string lon = Request.QueryString["lon"];

            if (lon == null || lat == null) {
                pt = new GLatLng(Helper.BASE_LAT, Helper.BASE_LON);
                zoom = Helper.BASE_ZOOM;
            }
            else {
                pt = new GLatLng(Convert.ToDouble(lat), Convert.ToDouble(lon));
            }
            gmap.setCenter(pt,zoom);

            GMarkerOptions mOpts = new GMarkerOptions();
            mOpts.draggable = true;

            GMarker marker = new GMarker(pt,mOpts);
            gmap.addGMarker(marker);

            gmap.addListener(new GListener(marker.ID, GListener.Event.dragend,
                string.Format(@"
                   function(overlay, point)
                   {{
                      var ev = new serverEvent('myDragEnd', {0});
                      ev.addArg({0}.getZoom());
                      ev.addArg(this.getPoint());
                      ev.send();
                   }}
                   ", gmap.GMap_Id)
                )
            );
        }
    }
}

protected string gmap_ServerEvent(object s, GAjaxServerEventOtherArgs e) {    
    switch (e.eventName) {
        case "myDragEnd":
            string zoomLevel = e.eventArgs[0];
            GLatLng point = GAjaxServerEventArgs.latlngFromString(e.eventArgs[1]);
            txtLat.Text = "Hello";//point.lat.ToString();
            txtLon.Text = "There";//point.lng.ToString();
        break;
    }
    return string.Empty;    
}

В основном я создаю перетаскиваемый маркер и прикрепляю к нему событие, которое обрабатывается последним методом, в котором выполняется присваивание ... которого не происходит.Текстовые поля по-прежнему отображаются пустыми.

1 Ответ

0 голосов
/ 24 июня 2014

при добавлении маркера

google.maps.event.addListener(marker, 'dragend', markerDrag);

, затем в заголовке

function markerDrag(evt)
                 {
                    document.getElementById('mlat_').value = this.getPosition().lat();
                    document.getElementById('mlng_').value = this.getPosition().lng();

                 }

, где mlat_ и mlng - тип ввода текста

...