使用.sdf数据库中的数据在地图上放置标记

时间:2014-05-22 13:18:34

标签: javascript google-maps google-maps-api-3

我有一个包含三个主要列的.sdf数据库:customer_namelatlon。 我想遍历表的行并使用标记的信息。 问题是地图生成正常,但标记没有放在地图上。

这是我到目前为止所拥有的......

@{
    var db = Database.Open("Contracts");
    var query = "SELECT customer_name, lat, lon FROM Contracts ORDER BY customer_name";
}

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
    $(document).ready(function () {
        initalise();
    });

    function initalise() {
        var mapOptions = {
            center: new google.maps.LatLng(52.007227, -0.719798),
            zoom: 200,
            mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementId("map_canvas"), mapOptions);
</script>

@foreach(var row in db.Query(query)) {
    <script type="text/javascript">
        var mark = new google.maps.LatLng(lat, lon);
        var marker = new google.maps.Marker({
            position: mark,
            map: map,
            title: @row.cusomter_name
        });
    </script>
}

<div id="map_canvas" style="width: 640px; height: 480px;"></div>

数据库列的属性分别为nvarchar(100)floatfloat

1 个答案:

答案 0 :(得分:1)

您的javascript无效,是不是您收到了JS错误? map变量是您的初始函数的本地变量(缺少结束})。因此,当您稍后尝试引用它时,它无法访问它。您正在使用<script> ... </script>标记对函数进行严格嵌套。

请改为尝试:

<script type="text/javascript">
$(document).ready(function () {
    initalise();
});

function initalise() {
    var mapOptions = {
        center: new google.maps.LatLng(52.007227, -0.719798),
        zoom: 200,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementId("map_canvas"), mapOptions);

    @foreach(var row in db.Query(query)) {
        var mark = new google.maps.LatLng(@row.lat, @row.lon);
        var marker = new google.maps.Marker({
            position: mark,
            map: map,
            title: @row.customer_name
        });
    }
}
</script>