Javascript 在Biostall-google-maps-V3 API库问题中显示带有latlong json数据的标记

Javascript 在Biostall-google-maps-V3 API库问题中显示带有latlong json数据的标记,javascript,json,google-maps,google-maps-api-3,codeigniter-3,Javascript,Json,Google Maps,Google Maps Api 3,Codeigniter 3,我有一个简单的AJAX,它将使用我的控制器从MYSQL获取所有数据,然后在搜索时显示所有数据及其纬度和经度: $(document).ready(function () { $("#searchDataToMarker").keyup(function () { var value = $(this).val(); $.ajax({ type: "POST", url: "<?php echo base

我有一个简单的AJAX,它将使用我的控制器从MYSQL获取所有数据,然后在搜索时显示所有数据及其纬度和经度:

$(document).ready(function () {
    $("#searchDataToMarker").keyup(function () {
        var value = $(this).val();
        $.ajax({
            type: "POST",
            url: "<?php echo base_url('Maps/mapSearchDataInMarker') ?>",
            data: {
                'searchDataToMarker': value
            },
            dataType: "JSON",
            success: function (searchMapDataResult) {
                if (searchMapDataResult.length !== null || $('searchDataToMarker').value !== '' || searchMapDataResult['latlong'] !== '') {
                    //we need to check if the value is the same
                    $("#searchResult").html(searchMapDataResult['lname']);
                    console.log(searchMapDataResult['lname']);
                    console.log(searchMapDataResult['latlong']);
                    var latlong = parseFloat(searchMapDataResult['latlong']);
                    var myLatLong = new google.maps.LatLng(7.289600,125.678066);
                    var iw = new google.maps.InfoWindow();
                    var myOptions = {
                        zoom: 15,
                        center: myLatLong,
                        mapTypeId: google.maps.MapTypeId.HYBRID
                    },
                    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

                    var markerOptions = {
                        map: map,
                        position: myLatLong
                    };
                    marker = new google.maps.Marker(markerOptions);
                    //for (var i = 0, length = searchMapDataResult.length; i < length; i++) {
                    google.maps.event.addListener(marker, "click", function () {
                        iw.setContent(searchMapDataResult['lname']);
                        iw.open(map, marker);
                    });
                //}
                } else {
                    $("#searchResult").html('');
                    alertify.alert('Search result empty.').set('modal', false);
                    return;
                }
            }
        });
    });
});
所有这些都完全有效。但我希望在指定位置(使用数据的纬度和经度)显示带有标记的数据

我的问题是,当我更改
var myLatLong=new google.maps.LatLng(7.289600125.678066)时:var myLatLong=new google.maps.LatLng(searchMapDataResult['latlong'])如果该值来自数据的纬度和经度,则不会显示标记或地图。它显示一个带有控制器的灰色面板


我很困惑,为什么它会显示一个带有这个
var myLatLong=new google.maps.LatLng(7.289600125.678066)
的标记,但它不会显示这个
var myLatLong=new google.maps.LatLng(searchMapDataResult['latlong'))
其中
searchMapDataResult['latlong]的值
完全相同?

问题在于google.maps.LatLng需要两个数字,而您正在从数据库中向其传递一个字符串(假设searchMapDataResult['latlong']返回一个逗号分隔的字符串)。所以你需要

  • 把纬度和经度分开
  • 把它们转换成数字
  • 生成google.maps.LatLng
  • 像这样:

    var latLngArray = searchMapDataResult['latlong'].split(',');
    var latitude = parseFloat(latLngArray[0]);
    var longitude = parseFloat(latLngArray[1]);
    var myLatLong = new google.maps.LatLng(latitude,longitude );
    

    嗯,这就是为什么它不呈现新的google.maps.LatLng()
    “因为它不做
    .split()
    ?顺便说一句,我已经试过你的代码了,它可以工作了!!!XD你真的是DenimChicken的大师。非常感谢您的快速回复,我没想到会这么快回答我的问题。荣誉(y)
    var latLngArray = searchMapDataResult['latlong'].split(',');
    var latitude = parseFloat(latLngArray[0]);
    var longitude = parseFloat(latLngArray[1]);
    var myLatLong = new google.maps.LatLng(latitude,longitude );