0

I try to solve this error for a few days, but I can't find the solution for the error. I have coordinatstrong texte dataset, I want to get the distance using that coordinate. when I run, it show error Message: Undefined property: stdClass::$distance and Message: Trying to get property 'value' of non-object

can you tell me what's wrong with the code?

public function inisialisasiPopulasi()
{
    $ObjekWisata = $this->generateKromosom();
    $populasi = array(
        array(
            "gen1"  => array("namalokasi" => "Lokasi Awal", "Kabupaten" => "Kabupaten awal", "longitude" => 0, "latitude" => 0),
            "gen2" => array("namalokasi" => "Destinasi 1", "Kabupaten" => "Kabupaten Destinasi 1", "Kategori" => 0, "latitude" => 0, "longitude" => 0,  "harga_seninJumat" => 0, "harga_sabtuMinggu" => 0),
            "gen3"   => array("namalokasi" => "Destinasi2", "Kabupaten" => "Kabupaten Destinasi 2", "Kategori" => 0, "latitude" => 0, "longitude" => 0, "harga_seninJumat" => 0, "harga_sabtuMinggu" => 0),
            "gen4"  => array("namalokasi" => "Lokasi Awal", "Kabupaten" => "Kabupaten awal", "longitude" => 0, "latitude" => 0)
        )
    );

    for ($i = 1; $i < 500; $i++) {
        shuffle($ObjekWisata); // baris ini untuk merandom objek wisata
        $kromosom = array(array(
            "gen1"  => array("namalokasi" => "Lokasi Awal", "Kabupaten" => "Kabupaten awal", "longitude" => 0, "latitude" => 0),
            "gen2" => array("namalokasi" => $ObjekWisata[0][1], "Kabupaten" => $ObjekWisata[0][2], "Kategori" => $ObjekWisata[0][3], "latitude" => $ObjekWisata[0][4], "longitude" => $ObjekWisata[0][5], "harga_seninJumat" => $ObjekWisata[0][6], "harga_sabtuMinggu" => $ObjekWisata[0][7]),
            "gen3"   => array("namalokasi" => $ObjekWisata[1][1], "Kabupaten" => $ObjekWisata[1][2], "Kategori" => $ObjekWisata[1][3], "latitude" => $ObjekWisata[1][4], "longitude" => $ObjekWisata[1][5], "harga_seninJumat" => $ObjekWisata[1][6], "harga_sabtuMinggu" => $ObjekWisata[1][7]),
            "gen4"  => array("namalokasi" => "Lokasi Awal", "Kabupaten" => "Kabupaten awal", "longitude" => 0, "latitude" => 0),
            "jarak" => array("K1K2" => $this->jarak(doubleval($ObjekWisata[0][4]), doubleval($ObjekWisata[0][5]), doubleval($ObjekWisata[1][4]), doubleval($ObjekWisata[1][5])))
        ));
        $populasi = array_merge($populasi, $kromosom);
    }
    return $populasi;
}

public function jarak($latFrom, $lngFrom, $latTo, $lngTo)
{
    $dataJson = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?origins=" . $latFrom . "," . $lngFrom . "&destinations=" . $latTo . "," . $lngTo . "&mode=driving&language=pl-PL&key=AIzaSyDN1XxxneHyCz6PtbQlGfqHSm13RH16Pvc");
    $data = json_decode($dataJson);
    $distance = $data->rows[0]->elements[0]->distance->value;
    return $distance;
}
Ardi
  • 1

1 Answers1

0

Because when you get contents form google api. It's can be not found: You can try:

$distance = $data->rows[0]->elements[0]->status !== 'NOT_FOUND' ? $data->rows[0]->elements[0]->distance->value : false;
Viet Dinh
  • 1,871
  • 1
  • 6
  • 18