1

この関数はjavascriptにあり、すべてのマーカーと各マーカーのポップアップ情報を設定します。

var infowindow = new google.maps.InfoWindow();
for (var i = 0; i < arraylng.length - 1; i++) {
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(arraylng[i], arraylat[i])
    });
    var infowindow = new google.maps.InfoWindow({
        content: " "
    });
    makeInfoWindowEvent(map, infowindow, marker, i);
    markers.push(marker);
}

function makeInfoWindowEvent(map, infowindow, marker, i) {
    google.maps.event.addListener(marker, 'click', function() {
        alert(arraylat[i]); // working nice 
        alert(arraylng[i]); // working nice 
        infowindow.setContent(arraylng[i] + ", " + arraylat[i]);
        infowindow.open(map, marker);
    });
}

                }

私の質問は、データベースからアドレスを返すWebサービスからメソッドを追加するにはどうすればよいですか?これがコードです。

[WebMethod]
public string GetAddressMarker(string lat, string lng) {
    string address = "";
    var plac = GoogleapiBO.getClinicByLatLng(lat, lng);
    address = plac.address + ", " + plac.city;
    address = "'" + address + "'";
    return address;
}

必要なのは、このメソッドからアドレスを取得し(メソッドが必要string lat=arraylat[i] & string lng=arraylng[i])、に設定することだけです。infowindow.setContent(*here*);

これどうやってするの?

4

2 に答える 2

1

解決策#1

ウェブサービス:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetAddressMarker(string lat, string lng) {
    string address = "";
    var plac = GoogleapiBO.getClinicByLatLng(lat, lng);
    address = plac.address + ", " + plac.city;
    address = "'" + address + "'";
    return address;
}

Javascript

function makeRequest(url, message) {
    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    httpRequest.onreadystatechange = getResponse;
    httpRequest.open("POST", url, true);
    httpRequest.setRequestHeader("Content-Type", "application/json");
    httpRequest.send(message);
}

function getResponse() {
    if (httpRequest.readyState == 4 && httpRequest.status == 200) {
        //convert JSON string into object
        progressInfo(JSON.parse(httpRequest.responseText)) 
    }
}

function progressInfo(info) {
    //doing something with object info - in your case it should be the string
}

メソッドを呼び出すには:

makeRequest("http://..../webservice/Service.asmx/GetAdressMarker");

解決策#2

c#コードでjavascript変数を設定します。

<script type="text/javascript">
     var address= '<%= _address%>';
</script>

コードビハインド:

public partial class Entscheidungen : System.Web.UI.Page
{
    private string _address;

    protected void Page_Load(object sender, EventArgs e)
    {
         bt.Command += new CommandEventHandler(bt_Command);
    }

    void bt_Command(object sender, CommandEventArgs e)
    {
         _address = Service.GetAddressMarker(string lat, string lng)
    }

    ....
}
于 2012-07-17T11:51:27.197 に答える
0

これを試してみてくださいそれはあなたのために完全に使用されるかもしれません

<script type="text/javascript" language="Javascript" src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.1.min.js"></script>


<script language="javascript" type="text/javascript">

    var webServiceUrl = "../MathService.asmx/GetFullName";
    $("#btnAjax").click(function() {
        var webServiceUrl = "../MathService.asmx/GetFullName";
        var name = $("#txtBoxName").val();
        $.ajax({
            type: "POST",
            url: webServiceUrl,
            data: "{'name':'" + name + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: SuccessCallBack,
            error: FailureCallBack
        });
    });

    function SuccessCallBack(data) {
        alert(data.d);
    }

    function FailureCallBack(data) {
        alert(data.staus + " : " + data.statusText);
    }</script>

この属性をサービスに追加することを忘れないでください。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetAddressMarker(string lat, string lng) {
    string address = "";
    var plac = GoogleapiBO.getClinicByLatLng(lat, lng);
    address = plac.address + ", " + plac.city;
    address = "'" + address + "'";
    return address;

}

于 2012-07-17T11:38:25.877 に答える