Comment réparer Les InvalidValueError: setPosition: pas un LatLng ou LatLngLiteral: dans propriété lat: pas un nombre?

j'essaie de porter mes fonctions v2 googlemaps sur v3.

mais d'une façon ou d'une autre j'ai coincé dans une erreur étrange et je n'ai pas pu trouver, ce que je fais mal.

Erreur : Uncaught InvalidValueError: setPosition: pas un LatLng ou LatLngLiteral: dans propriété lat: pas un certain nombre %7Bmain,adsense,la géométrie,la zombie%7D.js:25

Voici mon initialisation map:

var map = new google.maps.Map(document.getElementById("map"),{
  zoom:4
  size:new google.maps.Size(580,440),
  mapTypeControl: true,
  mapTypeControlOptions: {
    style:google.maps.MapTypeControlStyle.VERTICAL_BAR,
    position: google.maps.ControlPosition.BOTTOM_CENTER,
  },
  panControl: true,
  panControlOptions: {
    position: google.maps.ControlPosition.TOP_LEFT,
  },
  zoomControl: true,
  zoomControlOptions: {
    style: google.maps.ZoomControlStyle.LARGE,
    position: google.maps.ControlPosition.LEFT_CENTER,
  },
  scaleConrol: true,
  scaleControlOptions:{
    position: google.maps.ControlPosition.TOP_LEFT ,
  },
});
map.setCenter(new google.maps.LatLng(49.477643, 9.316406));

et voici la partie de mon erreur:

function drawTraders(map, options) {
var traders_uri = options.traders_uri || '';
if ('' == traders_uri) {
    return false;
}

// get the informations
$.getJSON(traders_uri, function(data) {
    // look through the information
$.each(data.traders, function(i, trader) {
var icon = options.icon_image_uri;

var markerIcon = new google.maps.MarkerImage(icon,
    // This marker is 20 pixels wide by 32 pixels tall.
    new google.maps.Size(25, 25),
    // The origin for this image is 0,0.
    new google.maps.Point(0,0),
    // The anchor for this image is the base of the flagpole at 0,32.
    new google.maps.Point(0, 32)
);

var html = 'test';

/*Information from chromium debugger
trader: Object
    geo: Object
        lat: "49.014821"
        lon: "10.985072"

*/
var myLatlng = new google.maps.LatLng(trader.geo.lat,trader.geo.lon);

/*here is the error in new google.maps.Marker()*/
var marker = new google.maps.Marker({
    position:   myLatlng,
    map: map,
    icon : markerIcon,
});

var infowindow = new google.maps.InfoWindow({
    content: html
});
}

modifier: le appel de tracktraders!--4-->

 drawTraders(map, {
        traders_uri: "getTraders.php",
        icon_image_uri: "icon-cms.gif",
 });

j'utilisais cet exemple Fenêtre D'Information

j'espère que quelqu'un pourrait m'aider.

Edit:

Violon qui ne fonctionne pas

Violon qui fonctionne

33
demandé sur Rishabh 2013-12-14 19:32:21

5 réponses

Uncaught InvalidValueError: setPosition: pas un LatLng ou LatLngLiteral: dans propriété lat: pas un nombre

signifie que vous ne passez pas nombres dans google.cartographie.LatLng constructor. Par votre commentaire:

/*Information from chromium debugger
trader: Object
    geo: Object
        lat: "49.014821"
        lon: "10.985072"

*/

trader.geo.lat et trader.geo.les lon sont des cordes, pas des nombres. Utilisez parseFloat pour les convertir en nombres:

var myLatlng = new google.maps.LatLng(parseFloat(trader.geo.lat),parseFloat(trader.geo.lon));
87
répondu geocodezip 2013-12-14 15:40:06

j'ai eu le même problème avec exactement le même message d'erreur. En fin de compte l'erreur a été, que j'ai toujours appelé les cartes v2 javascript. J'ai dû remplacer:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=####################" type="text/javascript"></script>

<script src="http://maps.googleapis.com/maps/api/js?key=####################&sensor=false" type="text/javascript"></script>

après cela, il a bien fonctionné. m'a fallu un certain temps ;-)

19
répondu CodeCountZero 2014-01-14 13:48:00

j'avais le même problème, le fait est que l'entrée de lat et long devrait être String. Alors seulement, j'ai réussi.

par exemple:

Contrôleur.

 ViewBag.Lat = object.Lat.ToString().Replace(",", ".");

 ViewBag.Lng = object.Lng.ToString().Replace(",", ".");

View - fonction javascript

<script>
    function initMap() {
        var myLatLng = { lat: @ViewBag.Lat, lng: @ViewBag.Lng};

        // Create a map object and specify the DOM element for display.
        var map = new window.google.maps.Map(document.getElementById('map'),
        {
            center: myLatLng,
            scrollwheel: false,
            zoom: 16
        });

        // Create a marker and set its position.
        var marker = new window.google.maps.Marker({
            map: map,
            position: myLatLng
            //title: "Blue"
        });
    }
</script>

je convertis la double valeur en chaîne et je fais un remplacement dans le', 'to'. Donc tout fonctionne normalement.

3
répondu Julio Cezar 2018-06-07 09:52:19

en utilisant angulaires-google-maps

$scope.bounds = new google.maps.LatLngBounds();
for (var i = $scope.markers.length - 1; i >= 0; i--) {
    $scope.bounds.extend(new google.maps.LatLng($scope.markers[i].coords.latitude, $scope.markers[i].coords.longitude));
};    
$scope.control.getGMap().fitBounds($scope.bounds);
$scope.control.getGMap().setCenter($scope.bounds.getCenter());
1
répondu Cristian Agudelo 2017-08-16 02:02:50

vous êtes probablement de passage null valeur si vous chargez les coordonnées dynamiquement, faites une vérification avant d'appeler le chargeur de cartes ie:if(mapCords){loadMap}

0
répondu Ed Barahona 2017-06-09 20:59:10